又名name space,名称空间就是存放变量名与变量值绑定关系的地方
名称空间共3种,分别如下
不同变量的作用域不同就是由这个变量所在的命名空间决定的。
作用域即范围
查看作用域方法 globals(),locals()
有了名称空间,才有了作用域
level = ‘L0‘
n = 22
def func():
level = ‘L1‘
n = 33
print(locals()) # level = L1, n = 33
def outer():
n = 44
level = ‘L2‘
print(locals(),n) # level = ‘L2‘ , n = 44
def inner():
level = ‘L3‘
print(locals(),n) #此外打印的n是多少?44
inner()
outer()
func()
输出:
{‘level‘: ‘L1‘, ‘n‘: 33}
{‘level‘: ‘L2‘, ‘n‘: 44} 44
{‘level‘: ‘L3‘, ‘n‘: 44} 44
问题:在inner()里的打印的n的值是多少?44
LEGB 代表名字查找顺序: locals -> enclosing function -> globals -> __builtins__
原文:https://www.cnblogs.com/fantsaymwq/p/9597126.html