导图社区 Python知识总结
Python是一种面向对象解释性高级编程语言,下列思维导图带大家初始Python相关基础知识,已经初步学习过Python的同学也可以继续学习,导图中有进阶提高的部分。
编辑于2021-01-25 18:44:32Python
基础知识
初始Python
Python是一种面向对象解释性高级编程语言
应用方向
Web
大数据开发
人工智能
网络爬虫
云计算
Python的语言基础
语法特点
注释规则
单行注释 “# 注释内容”
多行注释 """ 注释内容 """
代码缩进
通常4个空格或一个Tab键代表一个缩进量
同一级级别的缩进必须相同
冒号和下一行的缩进代表一个代码块的开始,缩进结束则代表一个代码块的结束
编码规范
编写规则
采用PEP8
命名规范
模块名尽量短小,且全部是小写字母可以使用下划线
包名尽量短小,且全部是小写字母,不推荐用下划线
类名采用单词首字母大写(Pascal风格)
模块内部采用下划线"_"+Pascal风格的类名组成
函数。类的属性,方法,全部用小写字母,字母之间用"_"连接
常量名去全部用大写字母,可以使用下划线
使用单下划线"_"开头的模块变量或者函数是受保护的,不能使用使用import* from导入
使用双下划线"__"开头的实例变量或方法是私有的
变量
保留字
区分大小写
意义用法
标识符
由字母、数字、“_"、组成,第一个不能为数字
不能使用保留字
区分字母大小写
定义变量
变量名必须是有效标识符
变量名慎用小写字母"l”和大写字母"O"
选择有意义的单词做为变量名
允许多个变量指向同一个值
使用内置函数type()可以返回变量类型
使用函数id()可以返回变量的内存地址
基本数据类型
数字
整数
十进制整数
八进制整数
十六进制整数
二进制整数
浮点数
复数
由实部和虚部组成,使用'j'和'J'表示虚部
字符串
布尔类型
数据类型转换
链接
基本的输入与输出
input()输出
将输入的任何东西都视作字符串串
print() 输入
输出的可以是字符串和数字,输出后自动换行
运算符与表达式
算数运算符
赋值运算符
比较运算符
逻辑运算符
位运算符
详情
在编写程序时尽量使用()来限定运算次序
流程控制语句
程序结构
顺序结构
选择结构
循环结构
选择语句
if 语句
if...elif...else 语句
if 语句的嵌套
循环语句
while语句
for 语句
嵌套循环
相关语句
break语句
跳出最内层循环
continue
中止本次循环,提前进入到下一轮循环
pass
占位符,不做任何事情
序列
列表
一系列按照特定顺序排列的元素组成
任何类型的额元素都能放在一起
添加修改和删除
添加
insert()向指定位置添加元素
listname.append(obj) 在列表末尾追加元素
extend()将一个列表中的元素全加到另一个列表中 listname1.extend(listname2)
修改
只需要获取该元素,并重新赋值
删除
根据索引删除元素 del.listname[n]
根据元素值删除 listname.remove(obj)
对元素进行统计计算
count() 获取指定元素在列表中出现的次数
sum() 统计数值列表中各元素之和
sort() 对原数列中的元素进行排序,默认顺序是从小到大,sort(reverse=True),从大到小
sorted()对列表进行排序,原列表不变
元组
一系列按照特定顺序排列的元素组成,且序列不可变
不能向元组中增添或修改元素
元组比列的访问和处理速度快
元组可以作为字典的键,列表不可可以
集合
保存不重复元素
类型
可变集合
不可变集合
创建集合
用 { } 直接创建
用 set() 将列表元组等可迭代的对象转换成集合
set()集合是无序的所以每次输出时,输出的顺序不同
增添和删除元素
setname.add(element)
用del命令删除整个集合,pop() ,remove() 删除一个元素
集合的交集并集,差集
交集 &
并集 |
差集 -
字典
无序的可变序列,内容是以键对值的形式存放的
通过键进行读取
字典是可变的并且可以任意嵌套
字典中的键必须唯一,且键是不可变的
字符串
字符串的编码转换
编码encode()
解码 decode()
字符串的常用操作
拼接字符串
使用"+"可以将多个字符串连接到成一个字符串
字符串不能与其他类型的数据进行拼接
计算字符串的长度
Python默认UTF-8编码
len() 计算字符串的长度(不区分英文,数字,汉字,所有的字符都认为是一个
截取字符串
通过切片的方式进行截取字符串
检索字符串
count() 检索指定字符串在另一个字符串中出现的次数
find() 用于检索是否包含指定的字符串,如果不存在返回-1,如果存在返回首次出现的索引值
index() 检索是否包含指定的字符,如果存在返回首次出现的索引值,如果不存在则会抛出异常
startswith() 用于检索字符串是否以指定字符开头,如果是返回True,如果不是返回False
endswith() 用于检索字符串是否以指定字符串结尾,如果是返回True,如果不是返回False
分割、合并字符串
split() 把一个字符串按照指定的分割符分割为列表该列表中不包含分隔符 str.split(sep, maxsplit)
join() 用固定的分隔符将列表中的字符串连接起来
字母的大小写转换
lower() 将字符中所有的大写字母转换成小写字母
upper() 将字符串中所有的小写字母全部转换成大写字母
格式化字符串
strip() 去掉字符串左右两侧的空格和特殊字符串特殊字符有制表符\t,回车符\r,换行符\n
lstrip() 去掉字符串左侧的空格和特殊字符串
rstrip 去掉字符串右侧的空格和特殊字符串
进阶提高
正则表达式
正则表达式语法
行定位符
元字符
重复
字符类
排除字符
选择字符
转义字符
分组
概要
使用re模块实现正则表达
match() 用于从字符串开始处进行匹配,如果在起始位置匹配成功则返回Match对象,否则发返回None re.match(pattern, string, [flags]) pattern: 模式字符串,有匹配的正则表达式转换而来 string:要匹配的字符串 flags: 可选参数,表示标志位,用于控制匹配方法,如是否区分大小写,
search() 用于在整个字符串中搜索第一个匹配的值,如果在起始位置匹配成功则返回Match对象,否则发返回None re.search(pattern, string, [flags]) pattern: 模式字符串,有匹配的正则表达式转换而来 string:要匹配的字符串 flags: 可选参数,表示标志位,用于控制匹配方法,如是否区分大小写
sub() 用于字符串的替换 re.sub(patten, repl, string, count, flags) patten: 表示模式字符串,由匹配的正则表达式转换而来 repl: 表示替换的字符串 string: 表示要被查找或者替换的字符串 count: 可选参数,表示模式匹配后,替换的最大次数,默认值为0 表示替换所有的匹配 flags:可选参数,表示标志位,用于控制匹配方式,如是否区分大小写
split() 用于实现根据正则表达式分割字符串,并以列表的形式返回,如果匹配成功,返回包含匹配结构的列表,否则返回空列表 分割字符由模式字符串决定 re.split(pattern, string, [maxsplit], [flags]) pattern: 模式字符串,有匹配的正则表达式转换而来 string:要匹配的字符串 maxsplit: 可选参数,表示最大拆分次数 flags: 可选参数,表示标志位,用于控制匹配方法,如是否区分大小写
函数
创建于调用
使用关键字def定义一个函数
调用函数 将定义有某种用途的函数执行
参数传递
形式参数
在定义函数时函数名括号中的参数,
实际参数
在调用一个函数时,函数名后面括号中的参数
位置参数
在调用函数时,指定的实际参数,必须与形式参数的顺序和数量一致
关键字参数
使用使用形式参数的名字来确定输入的参数值
防止输入实际参数不够,在定义函数时指定默认值
可变参数
传入函数的实际参数可以不固定
返回值
return语句
可以返回任数据类型
可以 返回多个值
执行完return语句直接结束函数的执行
当函数没有return语句时,或者省略了,return语句的参数,将返回None,返回空值
变量的作用域
局部变量
在函数内部定义、使用,只在函数内部有用
全局变量
能够作用与函数内外的变量
在函数外定义
在函数内定义,并且使用global关键字修饰
匿名函数
没有名字的函数,通常只是用一次
面向对象程序设计
概述
对象
静态部分: 属性
动态部分: 方法
类
类是封装对象的属性和行为载体
对象是类的实例
特点
封装
继承
多态
类的定义和使用
定义类
类的定义使用class关键字
驼峰式命名法
创建__init__() 类
第一个参数必须是self
开头和结尾是两个下划线
创建类的成员并访问
访问限制
_foo 单下划线,protect(保护)类型的成员,只允许类本身和子类访问
__foo 双下划线,private(私有)类型成员只允许定义该方法的类本身访问
__foo__ 首位双下划线,特殊方法,一般是系统定义的名字
属性
通过@property(装饰器)将一个方法转换成属性,以后在调用的时候可以直接通过方法名进行访问,不需要小括号
为属性添加安全保护机制
@property 修饰后 创建一个可以读取但不能修改的属性
继承
继承的基本语法
可以继承多个父类
被继承的叫父类或者基类
继承可以达到带代码重用,提高开发效率
方法重写
当父类的某个方法不适用于子类,需要在子类中重写这个方法
调用基类的__init__()方法,
要让派生类调用基类的__init__()方法,需要在派生类使用super() 函数调用基类的__init__()方法
模块
概述
自定义模块
python中的包
引用其他模块
异常处理及程序调试
异常处理语句
程序调试
文件及目录操作
基本文件操作
目录操作
高级文件操作
操作数据库
数据库编程接口
使用SQLite
使用MySQL
高级应用
GUI界面编程
pygame游戏编程
网络爬虫开发
使用进程和线程
网络编程
Web编程
Fiask框架
项目实战
子主题