介绍
1.Pyhon是一种解释型、面向对象、动态数据类型的高级程序设计语言。
2.Python特点:简洁、可读性强、免费和开源、可移植性和跨平台、丰富的库、可扩展性(可嵌入到C和C++)。
3.Python是由C语言开发,但不再有C语言中指针等复杂数据类型。
4.应用范围
1)科学计算
2)人工智能
3)web服务端和大型网站后端,如YouTube、gmail
4)GUI开发(图形用户界面开发)
5)游戏开发
6)移动设备
7)嵌入式设备
8)系统运维
9)大数据
10)云计算
5.Python中,一切皆对象。每个对象由:标识(id)、类型(type)、value(值)组成。对象的本质就是:一个内存块,拥有特定的值,支持特定类型的相关操作。
6.Python3代码保存必须是UTF-8
安装
1.安装Anaconda
1)查看python版本:python
2)查看conda版本:conda --version
3)查看系统中的所有环境:conda info --env
2.安装IDE:pyCharm
一.标识符和变量
1.注释
1)行注释:#
2)段落注释:''' '''
2.标识符
1)由字母、数字和下划线组成,不能以数字开头
2)区分大小写http://note.youdao.com/iyoudao/?p=2411
3)不能使用关键字,如:['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
4)以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法,如:_init_是类的构造函数。
3.标识符命名规则
类型 | 规则 |
---|---|
模块和包名 | 全小写字母,尽量简单。若多个单词之间用下划线 |
函数名 | 全小写字母,多个单词之间用下划线隔开 |
类名 | 首字母大写,采用驼峰原则。多个单词时,每个单词第一个字母大写,其余部分小写 |
常量名 | 全大写字母,多个单词之间用下划线隔开 |
变量名 | 全小写字母,多个单词之间用下划线隔开 |
4.del+变量名称:删除变量
5.链式赋值:如x=y=123
6.系列解包赋值:如a,b,c=1,2,3
注:系列解包赋值实现变量交换,如a,b=b,a
7.id():查看地址;type():查看类型
二.数据类型与运算符
1.进制
1)二进制:0b/0B
2)八进制:0o/0O
3)十六进制:0x/0X
2.**表示指数运算;//表示整除
3.int():取整数; str():转化成字符串;eval():字符串转化为数值
4.round():四舍五入,不改变原有值,而是产生新的值
5.is与== 区别
1)is用于判断两个变量引用对象是否为同一个,即比较对象的地址
2)==用于判断引用变量引用对象的值是否相等,默认调用对象的_eq_()方法
6.Unicode可表示世界上任何书面语言的字符。ASCII码是Unicode编码的子集。
1)ord():求字符的编号,字符串长度只能为1
2)chr():求编号对应的字符
7.输入输出
1)input()/print()
2)print()高级用法
2.1)end:默认换行
2.2)sep:print连续打印时,默认空格
8.字符串操作
1)slice字符串切片:[起始偏移量start:终止偏移量end:步长step]
2)split()分割
3)join()合并
4)strip()去除字符串首尾指定信息
5)upper()所有字符全转成大写
6)lower()所有字符全转成小写
7)*字符串复制,如“st”*3=>"s
9.格式化
1)字符串格式化:format()数据对齐,^、<、>居中、左对齐、右对齐,后面带宽度
2)数据格式化
10.in/not in:判断某个字符(子字符串)是否存在于字符串中
11.io.StringIO():可变字符串
三.序列
1.序列是一种数据存储方式,用于存储一系列的数据。常用的序列结构有:字符串、列表、元组、字典、集合。
2.列表list
1)列表:用于存储任意数目、任意类型的数据集合。如a=[10,20,30],列表大小可变,根据需要随时增加或缩小。
2)操作:创建、增加、删除、查询、slice切片、遍历、排序
3.元组tuple
1)元组属于不可变序列,不能修改元组中的元素。如a=(10,20,30)或a=10,20,30
2)操作:创建、删除、slice切片、排序、zip
4.字典dict
1)字典是“键值对”的无序可变序列。“键”是任意的不可变数据,如整数、浮点数、字符串、元组,但列表、字典、集合这些可变对象,不能作为“键”。如a={'name':'gaoqi','age':18,'job':'programmer'}
2)操作:创建、get()获取值、增加、删除、修改
5.集合
1)集合是无序可变,元素不能重复。实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一的。如a={3,5,7}
2)操作:创建、增加、删除、交并差集
四.流程控制语句
1.if条件语句
1)if
2)if...else
3)if...elif...else
4)三元条件运算符:条件为真的值 if (条件表达式) else 条件为假的值,如2 if a>1 else 0
5)条件表达式的值为False的情况:False、0、0.0、空值None、空序列对象(空列表、空元组、空集合、空字典、空字符串)、空range对象、空迭代对象
6)条件表达式中,不能有赋值操作符“=”
2.while/for循环语句
1)while
2)while...else
3)for 变量 in 可迭代对象,其中迭代对象为序列(字符串、列表、元组)、字典、迭代器对象(iterator)、生成器函数(generator)
4)for 变量 in range(100),其中range(min,max,step)--不包含max,即<max;range(max,min,step)--不包含min,即>min
5)for 变量 in 可迭代对象....else
6) for循环的运算速度不如while快.
3.break/continue
1)break结束整个循环
2)continue结束本次循环,后续代码不再执行。可用于筛选
4.推导式创建序列
1)列表推导式:[表达式 for item in 可迭代对象] 或 [表达式 for item in 可迭代表达式 if 条件判断] 或 [表达式 for item in 可迭代对象 for item in 可迭代对象]
2)字典推导式:{key_expression: value_expression for 表达式 in 可迭代对象},也可以增加if条件判断、多个for循环
3)集合推导式:{表达式 for item in 可迭代对象} 或 {表达式 for item in 可迭代表达式 if 条件判断}
4)生成器推导式(生成元组):(表达式 for item in 可迭代对象) 或 (表达式 for item in 可迭代表达式 if 条件判断)
五.函数
1.函数分类
1)内置函数:如str()、list()、len(),拿来直接使用
2)标准库函数:通过import语句导入库
3)第三方库函数
4)用户自定义函数
2.定义函数
def 函数名([参数列表]):
‘’‘注解:函数说明’’’
函数体
3.返回值return
1)作用:返回值、结束函数执行
2)不包含return语句,返回None值
3)返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可
3.全局变量/局部变量
1)全局变量:作用域为定义的模块
2)局部变量:作用域为函数体
3)locals():打印局部变量;globals():打印全局变量
4)global:声明全局变量
5)nonlocal:声明外层的局部变量,直接改变 用于函数嵌套
4.参数传递
1)Python中参数的传递都是“引用传递”,不是“值传递”
2)浅拷贝/深拷贝
2.1)浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用
2.2)深拷贝:会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象
3)可变参数
3.1)*param(一个星号),将多个参数收集到一个“元组”对象中
3.2)**param(两个星号),将多个参数收集到一个“字典”对象中
5.lambda表达式和匿名函数:lambda表达式可以用来声明匿名函数。如lambda arg1,arg2,agr3… : <表达式>
6.eval()函数:将字符串str当成有效的表达式来求值并返回计算结果
7.LEGB规则:查找“名称”是,按照LEGB规则查找的:Local–Enclosed–Global–Built in
1)Local:指的是函数或者类的方法内部
2)Enclosed:指的是嵌套函数(闭包)
3)Global:指的是模块中的全局变量
4)Built in:指的是Python为自己保留的特殊名称
六.面向对象编程
1.面向过程与面向对象
1)面向过程
1.1)面向过程:关注“程序的逻辑流程”,是一种“执行者”思维,适合编写小规模的程序。
1.2)面向过程思想思考问题时,首先思考“怎样按步骤实现?”并将步骤对应方法,一步一步,最终实现。
1.3)比如,如何开车?实现步骤1.发动车 2.挂挡 3.踩油门 4.走你
2)面向对象
2.1)面向对象:关注“软件中对象之间的关系”,是一种“设计者”思维,适合编写大规模的程序。
2.2)面向对象思想思考问题时,首先思考“怎样设计这个事物?”
2.3)比如,造车?发现车由如下对象组成1.轮胎 2.发动机 3.车壳 4.座椅 5.挡风玻璃
2.对象的进化:简单数据–数组–结构体–对象(将不同类型的数据、方法(即函数)放在一起,就是对象)
3.类
1)构造函数 :def _init_(self[,参数列表])
2)析构函数:def _del_(self),用于实现对象被销毁时所需要的操作
3)实例方法 :def 方法名(self[,参数列表]);调用实例方法时,不需要给self传参
4)类方法
@classmethod
def 类方法名(cls[,形参列表])
5)静态方法
@staticmethod
def 静态方法名([形参列表])
注:类方法和静态方法内不能调用实例方法和实例属性。
6)def _call_(self[,形参列表]),定义了_call_方法的对象,称为“可调用对象”,即该对象可以像函数一样被调用。
7)Python中不要使用重名的方法,即Python中没有方法重载。在类体中定义了多个重名的方法,只有最后一个方法有效。
8)私有属性/私有方法(封装)
8.1)两个下划线开头的属性是私有的(private)
8.2)类内部可以访问私有属性/方法
8.3)类外部不能直接访问私有属性/方法,可通过“_类名__私有属性/方法名”访问
9)@property装饰器
9.1)@property可以将一个方法的调用方式变成“属性调用”
9.2)get和set方法
10)mro()可以查看这个类的继承层次结构
11)dir()可以查看对象内所有属性和方法
类的结构 |
---|
方法(函数) --行为 |
属性(变量) --状态 |
对象的结构 |
---|
方法(由同一个类创建的所有对象共享) --行为 |
属性(每个对象维持自己的属性) --状态 |
4.面向对象三大特征
1)封装、继承、多态
2)继承
2.1)python支持多重继承,一个子类可以继承多个父类,如 class 子类类名(父类1[,父类2,...])
2.2)super():在子类中,获取父类的方法用super()
3)多态
3.1)多态是指同一个方法调用由于对象不能可能产生不同的行为
3.2)多态是方法的多态,属性没有多态
3.3)多态存在有2个必要条件:继承、方法重写
5.组合是“has-a”的关系;继承是“is-a”的关系
七.设计模式
1.工厂模式:实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一的管理和控制。
2.单例模式:确保一个类只有一个实例,并且提供一个访问该实例的全局访问点。
八.文件操作(IO技术)
1.文件类型
1)文本文件:存储的是普通“字符”文件,python默认为Unicode字符集(两个字节表示一个字符,最多可以表示65536个),可以使用记事本程序打开。
2)二进制文件:存储的是“字节”文件,无法使用记事本打开。必须使用专用的软件解码。常见的有:MP4视频文件、MP3音频文件、JPG图片、doc文档等。
2.文件操作
1)open()创建文件对象
2)close()关闭文件对象
3)write()/writelines()写入数据
4)read([size])/readline()/readlines()读取数据
5)with上下文管理
3.序列化指的是将对象转化成“串行化”数据形式,存储到硬盘或通过网络传输到其他地方。反序列化指的是相反的过程,将读取到的“串行化数据”转化成对象。
九.异常处理
1.try的多种结构
1)try...一个except结构
2)try...多个except结构(多个异常,先子类后父类)
3)try...except...else结构
4)try...except...finally结构
2.常见异常
1)SyntaxError:语法错误
2)NameError:尝试访问一个没有申明的变量
3)ZerDivisionError:除数为0错误(零除错误)
4)ValueError:数值错误
5)TypeError:类型错误
6)AttributeError:访问对象的不存在的属性
7)IndexError:索引越界异常
8)KeyError:字典的关键字不存在
十.模块
1.模块
1)Python程序由模块组成。一个模块对应python源文件,一般后缀名是:.py。
2)模块由语句组成,运行Python程序时,按照模块中语句的顺序依次执行。
3)语句是Python程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。
2.模块化编程的流程
1)设计API,进行功能描述
2)编码实现API中描述的功能
3)在模块中编写测试代码,并消除全局代码
4)使用私有函数实现不被外部客户端调用的模块函数
3.模块的导入
1)import导入的是模块,即“文件”
2)from...import导入的是一个类/函数,即文件下的“内容”
4.包package:“包”就是一个必须有__init__.py的文件夹。
5.模块发布和安装
1)模块的本地发布
1.1)为模块文件创建相应结构的文件夹(一般,文件夹的名字和模块的名字一样)
1.2)在文件夹中创建一个名为【setup.py】的文件,并写入相应内容
1.3)构建一个发布文件。通过终端,cd到模块文件夹下面,输入命令:python setup.py sdist
2)本地安装模块
输入命令:python setup.py install。安装成功后,进入python目录/Lib/site-packages查看
3)模块的网上发布
十一.GUI
1.GUI(Graphics User Interface):图形用户界面编程
2.tkinter的GUI组件关系图:
转载:https://blog.csdn.net/erer_wanzi/article/details/105491740