当一行代码要使用变量 x 的值时,Python会到所有可用的名字空间去查找变量,按照如下顺序:
1.局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x,Python将使用这个变量,然后停止搜索。
2.全局名字空间 - 特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python将使用这个变量然后停止搜索。
3.内置名字空间 - 对每个模块都是全局的。作为最后的尝试,Python将假设 x 是内置函数或变量。
locals()
当前函数或类的方法里面的所有局部变量
如果在模块中用而不是放在函数里,则与globals()一样
globals()
返回所有的全局变量
如果用在函数中也只会返回全局变量,不会返回函数中的局部变量
局部名字空间可以通过内置的locals
函数来访问。
全局(模块级别)名字空间可以通过globals
函数来访问
另外还有很重要的一点locals() 只读, globals() 可读可写
例如:
def test():
globals()['a2'] = 4
test()
print a2 # 输出 4