类型转换:关键字int,浮点型和纯数字字符串和布尔值可以转为整型,布尔值转为整型为0和1
进制数之间的转换:十进制转其他进制,bin(十转二),oct(十转八),hex(十转十六)。其他进制转十进制in(),参数放其他进制数可以不用指定到底是几进制。
类型转换:关键字float,整型、纯小数的字符串和布尔值可以转为浮点型。
1.3 字符串类型转换:关键字str,所有类型都可以转为字符串
内置方法:
索引取值str[]
切片操作[::]
统计字符串字符个数len(str)
去除左右两边指定字符str.strip() str.lstrip() str.lstrip()
按照指定字符切片,返回一个列表str.split(), str.rsplit() 可以指定maxsplit参数 切片几次
替换字符串 str.replace() 返回一个新的字符串
统计字符出现次数 str.count()
取字符串索引 str.index() str.find() 这两者的区别是find方法索引不存在返回-1 而index方法直接报错
字母大小写 str.upper() str.lower() str.isupper() str.islower()
判断字符串是否是纯数字 str.isdigit()
字符串拼接 加法和str.jion() ‘’.jion([]) jion参数要是一个容器对象
全部单词首字母大写 str.title() str.istitle()
判断字母是否已指定字符开头结尾 str.startswith() str.endswith()
格式化输出 str.format()
类型转换:可迭代对象都可转字典 就是能够被for循环的(str, dict, tuple, set)
内置方法:
索引取值 list[]
切片 list[::]
统计列表数据个数 len(list)
统计列表数据出现此时 count()
排序 list.sort()
反转列表 list.reverse()
增
list.appent() 尾部添加 改变的是原来的列表
list.extend() 将多个数据值依次添加进去
list.insert() 按照索引值插入
删
del list[]
list.remove() 指名道姓删
list.pop() 尾部弹出 返回弹出数据 可以用变量名接受使用
list.clear() 清空列表
类型转换:传入的数据要有对应关系
内置方法:
按k取值
统计数据个数 len()
清除字典 dict.clear()
快速生成一个字典 dict.fromkeys()
增
dict[k] = 数据 k存在则修改 k不存在则新增
dict.update() 存在更新 不存在新增
dict.setdefault() 设置默认值 k存在则修改 不存在新增
删
del dict[k]
dict.pop() 尾部弹出 返回弹出数据值
dict,popitem() 随机弹出一个
查
dict.get() 按k取v k不存在返回None
dict,keys() 取所有的键
dict.values() 取所有的数据值
dict,items() 取k和v 返回一个列表套元组
类型转换:可迭代对象都可转为元组
内置方法:
索引取值 tuple[]
切片操作 tuple[::]
统计数据个数 len()
统计数据出现次数 tuple.count()
获取索引 typle.index()
元组只可查看数据不可修改
类型转换:可迭代对象都可转集合 循环遍历都为不可变类型
内置方法:集合一般用来去重和集合之间关系的运算
| 并集
& 交集
差集 -
^ 并起来除去交起来的
可变类型:修改数据 内存地址不变 说明修改的是原值 未产生新值(list dict set)
不可变类型:修改数据 内存地址发生改变 产生了新值(int float str tuple boll)
数据值绑定的变量名个数有几个引用计数就是几,当引用计数为0时,垃圾回收机制就认为数据为无用数据,就被当成垃圾回收,但是引用计数有一个缺点就是循环应用,容器类型没有绑定变量名但之间还存在间接引用,引用计数不为0,是垃圾但又回收不了。
2.2 标记清除标记清除就是就是扫描所有的数据值,如果没有变量名绑定,就进行标记,最后统一清除
2.3 分代回收一个数据被多个变量名引用,并且多次扫描都没有被清除,就认为这个数据是经常使用的,会将它升级,减少对它的扫描频率,一共可以分为三个层级,层级越高扫频率就越低。分代回收减轻了计算机的资源消耗。
三 字符编码 3.1 一家独大计算机诞生于美国,美国人编写了ASCⅡ编码表,里面存了所有的英文字符和数字的对应关系,一个英文字符对应一个bytes,常见的对应关系A-Z 65-90,a-z 97-122,此时的计算机只能认识英语
3.2 诸侯分割中国人编写了gbk,有所有的中文字符英文字符和数字之间的一一对应关系,英文字符对应一个bytes,中文字符最少对应2个bytes。
日本人编写了shift_jis,韩国人编写了Euc_kr
此时不能进行国家之间的交互
unicode于1990年开始研发,1994年发布,有各个国家字符和数字之间的对应关系,也有各个编码表之间的对应关系。
utf-8 用1个bytes存英文字符,最少三个bytes存中文字符,如果一个英文文档特别的大,用unicode就会增加一倍加载时间。所以就有了utf-8这种简洁的编码表。
encode:编码 人类字符>>>内存>>>硬盘
decode:解码 硬盘>>>内存>>>人类字符
open()和with open()
一次打开多个文件 中间用逗号隔开
r模式:
只读模式 不能写 文件名不存在报错
w模式:
只写模式 不能读 文件名不存在会新建一个文件 文件名存在则会清空文件内容 每次以w模式打开文件都会先清空文件内容
a模式:
只追加写 不能读 文件名不存在会创建一个新文件 存在不会清空文件内容 可在尾部追加内容
x模式:
创建一个新的文件 可写不可读 文件存在会报错
+模式:
可读可写模式 打开一个已有文件 文件名不存在会报错
t模式:
文本模式 读写都是字符串
b模式:
二进制模式 可以操作任意类型文件 读写都是字节
read() 读所以
readline() 读一行
readlines() 读多行
readable() 判断能不能读 返回布尔值
write() 写数据
writelins() 写多行
writeaable() 判断能不能写
flush() 刷新
close() 关闭文件
read(): 在t模式下是以字符为单位
传入一个整型参数,表示读到什么位置
tell():
返回文件光标当前位置 是整型
seek(): 以字节为单位
offset参数 位移量
wence参数 模式
0 文件开头位置
1 文件光标当前所在位置
2 文件末尾位置
1和2只支持二进制模式
覆盖写:
将文件内容从硬盘读到内存,在内存中修改好以后以w模式打开文件再将修改好的内容写进去
优点:不用申请额外的空间
缺点:数据过大会造成内存溢出
重命名:
将文件内容从硬盘读取到内存,在内存中修改好后保存文件,再导入os模块,remove掉旧文件,在rename修改好的文件名
优点:用for循环遍历文件内容不会造成内存溢出
缺点:会申请额外的空间
def:定义函数的关键字
函数名:和变量名差不多,调用函数时函数名加括号
参数:可有可无,接受参数
注释:函数功能 参数 返回值的描述
函数代码体:功能实现
return:函数执行完毕返回的数据 可有可无
函数遵循先定义后调用原则,在定义阶段只是在内存中申请一块内存存放函数名,函数名就相当于内存地址,并不会执行函数体代码,只会检查语法是否有误。函数在调用时用函数名加括号就可以执行到函数体代码。
5.3 函数的返回值return后面不写返回None,写一个什么数据类型就返回什么数据类型,写多个用逗号隔开,返回一个元组。
5.4 函数的分类内置函数:
在python解释器运行时就加载好的方法,只用加括号调用即可
自定义函数:
空函数:函数体代码为pass,主要用于前期项目搭建
无参函数:变量名括号内未写变量名,在调用时也不需要传参
有参函数:变量名括号内写变量名,在调用时必须传参,而且要一一对应
形式参数:函数定义阶段的参数
实际参数:函数调用阶段的参数
位置参数:
位置形参:在函数定义阶段,按照从左至右的顺序填入的变量名
位置实参:在函数调用阶段,按照从左至右的顺序依次填入的数据值,要和形参一一对应
关键字实参:在函数调用阶段,以变量名等于数据值的形式传入
默认值形参:在定义函数阶段,以变量名等于数据值的形式写入,在传参是可以不写,写了则会修改默认值。
可变长参数:
*args:接受多余的位置实参,组成一个元组赋值给args
**kwargs:接受多余的关键字实参,组成字典赋值给kwargs
不同类型参数混用的规则:简单的在复杂的前边



