2019.9.20函数作用域
可变长参数
形参
*args 表示接收多余位置参数
**kwargs表示接收多余关键字参数
定义时*args要放在**kwargs之后
实参
*用来解压缩列表或者元组或者字符串
**用来解压缩字典
函数对象的四个用法
- 引用
- 作为容器类的元素
- 作为函数的实参
- 作为函数的返回值
函数嵌套
def
def
函数中嵌套函数,其中内层函数外部不可用
名称空间和作用域
出现在嵌套函数中
名称空间
内置名称间Build-in
Python自带的关键字存放位置,
生命周期:解释器启动时生成,解释器关闭时释放
全局名称空间Global
放在可直接调用的空间
生命周期:文件执行时生效,文件执行结束后释放
局部名称空间
函数调用时候才会有局部
生命周期:调用时产生,调用结束释放
查找顺序
局部 --> 全局 --> 内置 --> 报错
作用域
内置作用域Build-in
内部函数存放位置
全局作用域Gobal
整个文件都可调用区域
上层函数本地作用域Enclosing
内层函数外部,非全局变量部分
本地作用域Local
本地作用域,局部作用域,
E和L中的同名变量名无关系(引用类型除外)
LEGB原则
两个函数
golbal x 可将函数内的变量变成全局作用域中的变量
nonlocal x 可将local变量变成enclosing作用域中变量