1. 函数参数
(1)形参:函数定义时的参数
(2)实参:函数调用时的参数
(3)收集参数:
普通收集参数:*args,收集多余的普通参数,组成一个元组
关键字收集参数:**kw,收集多余的关键字参数,组成一个字典
(4)命名关键字参数:函数定义时放在 * 号后面,调用时必须指定关键字实参;(*,abc)abc是命名关键字参数
(5)* 和 ** :打包和解包
函数定义处:打包(收集参数,放到元组或字典中)
函数调用处:解包(把容器类型里的数据,一个个拿出来传递给函数的形参)
(6)形参声明的顺序:
普通参数 > 默认参数 > 收集参数 > 命名关键字参数 > 关键字收集参数
(7)对于任何函数,都可以使用 def func(*args,**kw)来获取所有的参数
2. 内置函数
abs:绝对值
round:四舍五入
sum:求和
max:求最大值
min:求最小值
pow:n次方
range:产生指定范围的可迭代对象
bin:将十进制转成二进制
oct:将十进制转成八进制
hex:将十进制转成十六进制
chr:将二进制字节流转成字符串
ord:将字符串转成二进制字节流
eval:将字符串当做Python代码执行
exec:将字符串当做Python代码执行
repr:不转义字符输出字符串
input:接收输入的字符串
hash:生成哈希值
3. 全局变量和局部变量
全局变量:函数外部的变量,作用范围:整个文件
局部变量:函数内部的变量,作用范围:仅函数内部
内置函数:内建命名空间
关键字:
globals():返回字典,存放全局作用域所有内容
locals():返回字典,存放当前作用域的所有内容
global:关键字:声明或修改全局变量
nonlocal:关键字:修改局部变量(当前函数上一层的局部变量)
4. LEGB原则(就近原则)
变量的调用顺序采用LEGB原则
B -- Builtin(Python);Python内置模块的命名空间
G -- Global(module);函数外部所在的命名空间
E -- Enclosing function locals;外部嵌套函数的作用域
L -- Local(function);当前函数内的作用域
依据就近原则,从上往下,从里到外依次寻找
5. 闭包
# 获取闭包函数使用的变量 __closure__,cell_contents
(1)定义:内函数使用外函数的局部变量,并且外函数把内函数返回出来的方法叫闭包;返回的内函数叫闭包函数。
(2)特点:内函数使用了外函数的局部变量,外函数的局部变量与内函数发生绑定,延长该变量的生命周期
(3)意义:闭包可以优先使用外函数中的变量,并对闭包中的值起到了封装保护的作用,外部无法访问。
6. lambda表达式
定义:用一句话表达只有返回值的函数。
语法:
lambda 参数 :返回值
# (1)没有参数的 lambda 表达式 def func(): return "abc" func = lambda : "abc" res = func() print(res) # (2)有参数的 lambda 表达式 def func(num): return num ** 2 func = lambda num : num ** 2 res = func(3) print(res) """ 三目运算符: 真区间值 if 条件表达式 else 假区间值 """ # (3)带有判断条件的 lambda 表达式 def func(n): if n % 2 == 0: return "偶数" else: return "奇数" func = lambda n : "偶数" if n % 2 == 0 else "奇数" res = func(3) print(res)
7. 迭代器
(1)能被 next 方法调用,并且不断 。。。