

新闻资讯
技术学院Python命名空间是名字到对象的映射,分为局部、全局和内置三类,按LEGB规则查找;作用域决定可见性,if/for不建新命名空间,class创建独立命名空间,可用locals()、globals()等查看。
Python命名空间就是名字到对象的映射关系,简单说,就是一个“名字→值”的字典。你写的每个变量、函数、类,Python都会把它们的名字和对应的实际对象存进某个命名空间里,用来避免重名冲突,也决定名字在哪儿能用、用的是谁。
Python按作用域分三种主要命名空间:
当你写x,Python按固定顺序搜索命名空间:
例如:
x = "global"
def outer():
x = "enclosing"
def inner():
x = "local"
print(x) # 输出 "local"
inner()
这里inner()里的print(x)只看到自己定义的
x,不会去外层找——这就是LEGB生效的结果。
命名空间是存储结构,作用域是可见范围。作用域决定了哪个命名空间参与LEGB查找。注意:
调试时可以用:
比如在函数里打印locals(),就能看到当前有哪些变量及它们的值。