8.12(day13)闭包函数,装饰器,迭代器
复习
可变长参数
- *
- *args: 接收多余的位置实参
- *(): 打散元组内的元素当做位置实参传给形参
- **
- **kwargs: 接收多余的关键字实参
- **{}:打散字典的元素作为关键字实参传给形参
函数对象
函数名和变量名是等同的
- 引用
- 函数的参数
- 函数的返回值
- 容器类元素
函数的嵌套
def f1():
def f2():
pass
函数的调用
def f1():
pass
f1()
def f2():
f1()
# 函数必须得先定义后调用
名称空间与作用域
内置名称空间
Python解释器的内置方法,如 len/int/float, python解释器启动的时候就有了
全局名称空间
python文件执行的时候生成
局部名称空间
函数调用的时候生成
执行顺序 内置-->全局-->局部
查找顺序 当前位置开始 局部-->全局-->内置
全局作用域
内置+全局
局部作用域
局部
- 全局作用域内的变量(x=1)和局部作用域内的变量(x=1),两个x没有任何关系,只针对不可变类型
- 局部作用域1内变量(x=1)和局部作用域2内变量(x=1),两个x也没有任何关系,只针对不可变类型