函数
-
定义
- def 函数的名字():
- 实参: 实际调用的时候传递的信息
- 位置参数:按照位置传递参数
- 关键字参数:按照参数名字传递参数
- 混合参数:顺序- 位置参数放前面,关键字参数放后面
- 实参在执行的时候,必须要保障形参有数据
- 传递一个数组或者字典
- 使用 list传递,是把列表打散成位置参数进行传递给args
- 使用 dict,是把字典传递给args
- 形参: 在函数定义的时候,需要准备的变量来接收信息
- 位置参数
- 默认值参数
- 动态参数
- *args 表示接收所有的位置参数的动态传参放到一个元祖中
- **args 表示接收所有的关键字的动态传参
- 顺序: 位置> *args > 默认值 > **args
-
内置函数
- format: 格式化
- format(str,"08b") : b代表转成二进制,8代表最低8位,0代表补齐位置填0
- ord: python中使用的是unicode,计算出传入文字在unicode中的码位
- chr: 输入码位,输入文字
- all: 传入可迭代对象,判断其中元素是否都为true,相当于and
- any: 传入可迭代对象,相当于or
- enumerate: 将数组转为(索引,元素)的元祖
- hash: 哈希,将传入参数计算转为数字,然后进行数据存储-> 字典(集合)哈希表
- id: 获取传入参数的内存地址
- dir:传入参数,告诉你当前参数可以进行哪些操作
- zip:可以把多个可迭代对象合并
- locals:以字典的类型返回当前位置的全部局部变量
- globals:以字典的类型返回全部全局变量
- sorted:排序,默认从小到大,参数1:列表,参数2:排序函数
- filter:筛选,参数1:排序函数,参数2:列表
- map:参数1:排序函数,参数2:列表
- format: 格式化
-
global:在函数局部引入全局变量用来改变全局变量的值
-
nonlocal:在局部,引入外层的局部变量(如果没有,再往外一层找,直到全局(但不包括全局变量)),用来改变值
-
装饰器
- 本质上是个闭包
- 作用:在不改变原有函数调用的情况下,给函数增加新的功能
- 作用:可以在函数前后增加新功能
def wrapper(fn): # wrapper:装饰器 fn:目标函数 def inner(*args,**kwargs): #在目标函数执行之前... fn(*args,**kwargs) #在目标函数执行之后... return inner -
迭代器
- for...in...必须是可迭代对象
- 可迭代对象提供一个迭代器
- 迭代器本身是可以被迭代的
- iter() 内置函数可以拿到迭代器
- __ iter __() 特殊方法
- next() 逐一拿出元素
- __ next __() 特殊方法
- 迭代器的特性
- 只能向前不能反复
- 特别节省内存
- 惰性机制
for item in "123".__iter__(): try: data = item.__next__() print(data) except StopIteration: break
-
生成器
- 本质上就是迭代器
- 创建生成器的2种方式
- 生成器函数
- 生成器表达式
- 生成器有关键字yield
- 生成器函数执行的时候并不会执行函数,得到的是生成器
-
推导式
- 作用: 简化代码
- 语法:
- 列表推导式:[数据 for循环 if判断]
- 集合推导式:{数据 for循环 if判断}
- 字典推导式:{k:v for循环 if判断}
- 没有元祖推导式,因为元祖不可增加改变
- (数据 for循环 if判断) : 这个叫生成器表达式(一次性的)
-
匿名函数
- lambda表达式
- 语法: 变量 = lambda 参数1,参数2,参数3... : 返回值
- lambda表达式