目录
包
如果不同的人编写的模块重名了怎么办,为了解决模块命名冲突,引入了按目录来组织模块的方法,称为包
特点:引入了包之后,只要顶层的包不与其他人发生冲突,那么模块都不会与别人发生冲突
注意:目录只有包含一个叫做“__init__.py”的文件才被认作是一个包,主要是为了避免一些滥芋充数的名字,基本上这个文件什么也不写
第三方模块Pillow:非常强大的处理图像的工具库
PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。其官方主页为:PIL。 PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow
PIL可以做很多和图像处理相关的事情:
打印图片属性
- 图像归档(Image Archives) 。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
- 图像展示(Image Display) 。PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
- 图像处理(Image Processing) 。PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。
#引入三方库
from PIL import Image
#打开图片
i = Image.open(r"C:\Users\asus\Desktop\img\1.jpg")
#打印图片的格式,大小,类型
print(i.format,i.size,i.mode)
修改图片大小
#引入三方库
from PIL import Image
#打开图片
i = Image.open(r"C:\Users\asus\Desktop\img\1.jpg")
#打印图片的格式,大小,类型
print(i.format,i.size,i.mode)
#设置图片大小
i.thumbnail((200,100))
#保存到新图片
i.save(r"C:\Users\asus\Desktop\img\0.jpg","JPEG")
理解面向对象
面向过程:
- 自上而下顺序执行,逐步求精
- 其程序结构是按功能划分为若千个基本模块,这些模块构成树状结构
- 各模块之间的关系尽可能简单,在功能上相对独每一-模块内部均是由顺序、选择和循环三种基本结构
- 其模块化实现的具体方法是使用子程序。
- 程序流程在写程序时就已决定。
面向对象:
面向对象是相对面向过程而言
面向对象和面向过程都是一种思想
面向过程
- 强调的是功能行为
- 关注的是解决问题需要哪些步骤
面向对象
- 将功能封装进对象,强调具备了功能的对象
- 关注的是解决问题需要哪些对象
面向对象是基于面向过程的。
面向对象的特点:
- 是一种符合人们思考习惯的思想
- 可以将复杂的事情简单化
- 将程序员从执行者转换成了指挥者
完成需求时:
- , 先要去找具有所需的功能的对象来用。
- 如果该对象不存在,那么创建- 一个具有所需功能的对象。
python类
类:一种数据类型,本身并不占内存空间,根据所学过的Boolean,string,number等类似。用类创建实例化对象(变量),对象占内存空间。
设计类:
- 类名:首字母大写,其他遵循驼峰原则,见名知道意思
- 属性:其他遵循驼峰原则,见名知道意思
- 行为(方法/功能):其他遵循驼峰原则,见名知道意思
格式:
class 类名(父类列表):
属性
行为
创建一个类
# object:基类,超类,所有类的父类
#一般没有合适的父类就写object
class Preson(object):
#定义属性
name = ""
age = 0
height = 0
weight = 0
#定义方法,注意方法的参数必须以self当第一个参数,self代表类的实例
def run(self):
print("run")
def eat(self,food):
print("eat "+food)
实例化对象格式:
对象名 = 类名(参数列表)
注意:没有参数,小括号也不能省略
实例化一个类
#使用类实例化对象
a = Preson()
print(a)
a.run()
at后面的是对象a的内存地址
访问对象的属性和方法
#使用类实例化对象
a = Preson()
a.name = "kkk"
a.age = 18
a.height = 1.7
print(a.name,a.age,a.height)
a.run()
a.eat("apple")
对象的初始状态(构造函数__init__())
__init__():在使用类创建对象时自动调用
注意:如果不显示的写出构造函数,默认会自动添加一个空的构造函数
class Preson(object):
#定义属性
name = ""
#定义方法,注意方法的参数必须以self当第一个参数,self代表类的实例
def run(self):
print("run")
def eat(self,food):
print("eat "+food)
def __init__(self):
print("__init__()")
#使用类实例化对象
a = Preson()
print(a)
给__init__()设置参数,在实例化对象时在类后传参
class Preson(object):
def __init__(self,name,sex):
print(name,sex)
print("__init__()")
#使用类实例化对象
a = Preson("wang","man")
print(a)
self
self代表类的实例,而非类
哪个对象调用方法,那么这个方法中的self就代表那个对象
可以使用__init__去定义self.name
class Preson(object):
def say(self):
print("my name is %s,my age is %s" %(self.name,self.age))
def __init__(self,name,age):
self.name = name
self.age = age
#使用类实例化对象
a = Preson("likon",20)
a.say()
也可以直接给say方法赋参数
class Preson(object):
def say(self,name,age):
print("my name is %s,my age is %s" %(name,age))
#使用类实例化对象
a = Preson()
a.say("likon",20)
self.__class__ :代表类名
打印类名:
class Preson(object):
def say(self):
print(self.__class__)
#打印类名
a = Preson()
a.say()
一起学习,一起进步 -.- ,如有错误,可以发评论