数据类型:int、float、bool、str
查看类型:type(数据)
格式化字符串:
方式一: %s、%d、%f。
方式二:.f"字符串{表达式}字符串"
字符串函数:str.find(str,index_start,index_end)
str.replace(str,替代字符串,替换次数)
in方法 判断某个字符串是否是另个一字符串一部分
字符串分割 str.split("符号")
str1.join(list)方法,使用某个字符串作为拼接字符连接列表多个元素
字符串切片 str【】,str【index_start:index_end:step】,角标从0开始,结尾是-1
可以省略部分参数
str【::-1】字符串倒序
集合set,无序不重复
list,有序可重复
tuple,有序可重复不可变参数
dict:dict.keys(),dict.values() ,和java 的map映射类似,key不重复,无序,小数据量可能有序
extend 方法,可以将两个集合合并为一个
append 可以向集合添加一个元素
函数:函数定义
def func(形参列表):
代码体
调用:func(实参)
return 函数返回值:也可以打断函数执行
函数嵌套:函数一内部有函数二
函数递归:函数内部调用函数本身
局部变量全局变量:nonlocal,global,
变量的有效范围:函数内定义的变量,函数外无法调用,除非返回
函数外定义的全局变量,函数内默认无法调用无效,除非使用global,nonlocal关键字声明修改
参数类型:
位置参数:按对应位置传参
缺省参数:默认参数
不定长参数:字典型,元组型
元组型不定长args,传的参数自动封装为元组,使用时获取元组的值即可(只能放参数列表最后)
字典型不定长kwargs,传的参数自动封装为字典,使用时获取字典的值即可(只能放参数列表最后)
组包拆包:当多个变量=容器数据,自动将容器数据进行拆包,当容器=多个变量,自动变量进行组包为元组
a,b = b,a 先组包再拆包
return 返回多个值,在python中可以自动组装为元组返回,在别的语言中,一般不会允许多个返回值
字典拆包:for key,value in dict。items():
传入列表作为可变参数的值时,实参前加*,对于字典型的传参,加**
变量赋值本质:引用对象引用的内存地址
可变类型:在内存地址不变的情况下,改变存储的内容
不可变类型:在内存地址不变的情况下,不能改变存储的内容
range(start,end,step)获取一定范围内,指定类型的序列
列表推导式: 【i for i in range(10)】
lambda 表达式:在单行表达式或者一个函数调用的时候可用
lambda 参数1,参数2... : 参数1,参数2的计算式或者调用函数处理参数1,参数2
enumerate :遍历容器元素的同时获取索引和元素值
del 根据下标删除
文件操作:
f=open(‘xxx.txt’,pattern,encoding=utf-8)
f.write()写入
f.read()读取多少字符,不设置则读取所有
f.readline()按行读取
f.readlines()读取所有行 返回值列表,元素为每一行内容
访问模式:
r 读
w 写
a 追加
r+ 读写模式,不存在则报错
w+ 读写模式,文件存在会清空,文件不存在创建
a+ 读写模式,文件存在则追加,不存在则创建
rb二进制只读
wb二进制只写
ab二进制追加
读模式不能写入
编码问题:gbk(汉字一般2字节),utf-8(汉字一般3字节)
os模块
os.rename(a,b) 文件改名
os.remove(a) 文件删除,不能删除文件夹
os.mkdir() 新建目录
os.getcwd()获取结对路径
os.chdir() 改变工作路径
os.listdir()获取目录下文件列表
os.path.exists()判断目录是否存在
eval 根据字符串自动推断其容器类型:(去除两端的引号,得到的是什么类型,就是什么类型)
str 将容器或者对象转换为字符串(两端加上引号)
面向对象:
是一种编程思维,是面向过程编程的一种思维上的升级,实现一个功能前,抽象解决问题涉及的对象,抽象为类,封装属性和方法,站在对象配合的角度去完成要实现的功能
类:具有相同属性的方法,称为一类
对象:类的实例,类的具现,一个具体的例子
类相当于图纸,对象相当于建造的实物
定义类:
class ClassA(object或者要继承的类名):
方法体或者变量
classa =ClassA() 类的实例化 classa就是对象,可以调用类的方法和属性
self 哪个对象调用,它就是指哪个对象本身
魔法方法:__init__ ():初始化方法
__str__:返回值一个字符串:print 对象的时候打印其返回值
__del__ 在对象的生命周期结束时,会被调用,做一些清理操作
封装:将属性和方法封装为一个整体,然后通过实例化对象来处理
继承:类的属性和方法可以被继承或者重新写,优先调用子类的
继承多个类的同名方法,调用顺序按照继承顺序链来,通过类的__mro__属性查看
多态:相同对象,传入不同参数,进行调用会有不同的表现结果
super().方法名,调用父类的方法
类方法:@classmethod 修饰 可以被类调用或者对象调用,
实例方法:只能被对象调用,不能被类调用
静态方法:@staticmethod修饰,静态方法不涉及到类的属性和方法或者对象的,只是逻辑上存在于类中的
异常处理:
try:
代码块
except exception as e:
处理异常的代码print (e)
else :
没发生异常时执行的代码块
finally:
无论异常是否发生都会处理的代码,比如资源的释放或者文件句柄的释放
异常处理的外抛机制:当内存的代码异常没被处理,会在外层抛出
__name__指的是调用的类的程序名
__name__==__main__:,除非主动执行程序,否则为false
__all__ 返回 from * import * 时可被导入的模块名
__init__.py文件,在模块或包导入时,做些初始化的工作
正则表达式
. 匹配除换行符以外的
[]匹配括号中的任意一个
\d 匹配数字
\s 匹配空白
\w匹配非特殊字符 a-zA-Z0-9_汉字
{m,n}前一个字符m到n次
^ 匹配字符串开头
$匹配结尾
|匹配左右任意一个
()分组
(?P<name>)分组起别名
\n 引用分组
(?P=name)引用别名分组
re.match 匹配开头,返回match对象,可以用group获取
re.search 不一定从开始匹配,返回match对象
re.findall 查询所有满足条件的,返回列表
re.split ()正则分割
re.sub (pattern1,pattern2,str,count)正则替换
re.I 不区分大小写
re.S 使.能匹配包括换行在内的所有字符
re.M 影响^ ,$的行开始回合行结束效果(不起效)
贪婪模式:默认贪婪模式,匹配尽可能长的字符串,
在匹配字符串后加?可以让其非贪婪模式,匹配尽可能短的字符串
JSON解析:
jsonpath:
$ 根元素
@ 当前元素
.or [] 子元素
.. 不管位置,选择符合条件的
* 匹配所有元素节点
?() 支持过滤操作
() 支持表达式计算
例子:
jsonpath模块
jsonpath.jsonpath(json_str,pattern)