python笔记汇总
最累的时候,家人是你最好的归宿。
1. 字符串的常规操作
1 | # 字符串的首字母变成大写 |
2. 字符串的切割/拼接和替换
1 | # 去掉字符串左右两端(空格 \t \n) |
3. 字符串的查找和判断
1 | # 查找1 |
4. 列表增删改查
1 | # 1. 向列表中添加内容 |
5. 元组
t = (“张无忌”,“赵敏”,“呵呵”)
- tuple 元组,特点: 不可变的列表
- 运用场景: 固定了某些数据,不允许外界修改
- 元组如果只有1个元素,需要在元素的末尾添加一个逗号
6. set集合
t = {1,2,3,“呵呵”,(123,111)}
- set是无序的,可用于去重
- 只能存放不可变数据:int,str,tuple,bool 不能存放可变的数据有:list,dict,set
- 创建空结合 s = set() 空元组 s = tuple() 空列表 s = list() 空字符串 s = str()
1 | # 添加数据 |
7. dict字典
t = {‘jay’:‘周杰伦’,‘金毛狮王’:‘谢逊’}
- 字典是以键值对的形式存储数据的
- 字典的key必须是可哈希(不可变)的数据类型
- 字典的value可以是任何数据类型
1 | # 1. 字典的增删改查 |
8. 算数运算符
运算符号 | 运算名称 | 表达式 |
---|---|---|
+ | 加 | a + b 计算a+b |
- | 减 | a - b 计算a-b |
* | 乘 | a * b 计算a*b |
/ | 除 | a / b 计算a/b |
% | 计算余数 | a % b 计算a除以b的余数 |
// | 整除 | a // b 计算a除以b的商 |
** | 计算幂 | 2 ** 3 计算2的3次方 |
9. 文件操作
1 | # 1. 读取操作 r: read 读取 |
10. 函数的实参
- 实参,实际在调用的时候传递的信息
★ 位置参数,按照位置进行传递参数
★ 关键字参数,按照参数的名字进行传递参数
★ 混合参数
顺序: 位置参数放前面,关键字参数放后面
1 | def chi(zhu, fu, tang, tian): |
11. 函数的形参
- 形参,在函数定义的时候,需要准备一些变量来接收信息
★ 位置参数,按照位置进行传递参数
★ 默认值参数,在函数声明的时候给变量一个默认值,如果实参不传递信息,此时默认值生效,否则就不生效
★ 动态传参
*args, 表示接收所有位置参数的动态传参
**kwargs, 表示接收所有关键字参数的动态传参
★ 顺序: 位置 > *args > 默认值 > **kwargs
1 | # 1. 位置参数和默认参数 |
12. Python的内置函数
1 | lst = [12,456,32,18,64,57] |
1 | # zip: 可以把多个可跌倒内容进行合并 |
13. global和nonlocal
- global: 把外面的全局变量引入到局部
- nonlocal: 向外找一层,看看有没有该变量,如果有就引入,如果没有,继续向外一层,直到全局(不包括)
1 | # global |
1 | def func(): |
14. 闭包
- 可以让一个变量常驻于内存
- 可以避免全局变量被修改
1 | def func(): |
15. 装饰器
- 装饰器本质上是一个闭包 作用:可以在函数前后添加新功能,但是不改原来的代码
- 使用场景:在用户登录的地方、日志
- 一个装饰器可以被多个装饰器装饰
15.1 装饰器雏形
1 | # 场景:我要打游戏,雇佣管家在我打游戏前自动开外挂,打开游戏后自动关外挂 不改变原有代码 |
1 | # wrapper: 装饰器 fn: 目标函数 |
15.2 装饰器动态传参
1 | def guanjia(game): |
15.3 装饰器的返回值
1 | def guanjia(game): |
15.4 多个装饰器
1 | def wrapper1(fn): # fn: wrapper2.innner |
15.5 装饰器实战案例分享
- 场景: 写个添加员工信息、删除员工信息、修改员工信息、查询员工信息的函数,写一个登录装饰器给4个函数全部应用上。当用户第一次登录成功后,后面无需再次登录直接执行其他函数的后续操作,如果登录失败则需要重新登录直至成功。
1 | # 场景: 写个登录装饰器,如果登录成功无需再次登录,如果登录失败继续执行登录 |
16. 迭代器
- interable: 可迭代的东西
- 能够迭代的有: str、list、tuple、dict、set、open()
- 可迭代的数据类型都会提供一个叫迭代器的东西,这个迭代器可以帮我们把数据类型中的所有数据逐一的拿到
- 获取迭代器的两种方案:
★ inter() 内置函数可以直接拿到迭代器
★ 一般不常用___iter___() 特殊方法 - 从迭代器中拿到数据两个方案:
★ next() 内置函数
★ 一般不常用___next___() 特殊方法 - for里面一定是要拿迭代器的,所以说有不可迭代的东西不能用fou循环,for循环里面一定有___next___()出现
- 迭代器本身也是可迭代的
- 迭代器本身的特性:
★ 只能从上向下走不能反复
★ 特别省内存
★ 有惰性机制,主要不获取数据就不往后走 - 总结:迭代器统一了不同数据类型的遍历工作
1 | # 第一种获取迭代器 iter() |
17. 生成器
- 生成器的本质就是迭代器
- 创建生成器的两种方案:
★ 生成器函数
★ 生成器表达式 - 生成器函数:
★ 生成器函数中有一个关键字: yield
★ 生成器函数执行的时候,并不会执行函数,得到的是生成器
★ 只要函数中出现了yield,它就是一个生成器函数
★ yield作用:
★ 可以返回数据
★ 可以分段的执行函数中的内容,通过___next___()可以执行到下一个yield位置
1 | # 分段取数据 |
18. 推导式及生成器表达式
- 语法:
★ 列表推导式 :[数据 for循环 if条件判断]
★ 集合推导式 :{数据 for循环 if条件判断}
★ 字典推导式 :{k:v for循环 if条件判断}
★ 生成器表达式:(数据 for循环 if条件判断)
1 | # 1. 请创建一个列表[1,3,5,7,9] |
1 | s = {i for i in range(10)} |
1 | # 请将下列的列表修改成字典,要求索引作为key,数据作为value |
1 | gen = (i**2 for i in range(10)) |
19. 匿名函数
- 匿名函数:lambda表达式
- 语法规则:变量 = lambda 参数,参数2… : 返回值
1 | # 计算a+b的结果 |
评论