python3的四个作用域
作用域:是访问变量时查找变量名的范围
* python3的四个作用域: LEGB
作用域 | 英文解释 | 英文简写 |
---|---|---|
局部作用域(函数内) | Local(function) | L |
外部嵌套函数作用域 | Enclosing function locals | E |
函数定义所在模块作用域 | Global(module) | G |
python内置模块的作用域 | Bui | B |
* 变量名查找规则:
在访问变量时,先查找本地变量,然后是包裹此函数外部的函数内的变量,之后是全局变量
最后是內建作用域内的变量
即: L –> E —> G —> B
** 在默认情况下,变量名赋值会在当前作用域内创建变量和修改变量
示例:
v = 100 # 全局作用域
def fun1():
v = 200 # 外部嵌套函数作用域
print('fun1.v=', v)
def fun2():
v = 300 # 局部作用域
print('fun2.v=', v)
print(max) # max函数都没有创建,在内建函数作用域中,只读,不能改变
# 可以在其余三个作用域重新创建。
fun2()
fun1()
print("全局变量.v=", v)
print(max) # max变量定义在内置模块的作用域,是解释执行器提前定义好的