仅供参考
1、locals() 和 globals() 是python 的内建函数,他们提供了字典形式访问局部变量和全局变量的方式。
def test(arg):
a=1
b=2
data_dict = {}
print locals()
print globals()
if __name__ == '__main__':
test(3)
输出:
{'a': 1, 'data_dict': {}, 'b': 2, 'arg': 3}
{'__builtins__': <module '__builtin__' (built-in)>,
'__file__': 'F:/work/workspace/pythonWorkspace/learn/locals_globals.py',
'__package__': None,
'test': <function test at 0x0239F830>,
'__name__': '__main__',
'__doc__': None}
2、locals() 返回是当前局部变量的深拷贝,修改locals() 中变量值的时候,实际上对于原变量本身是没有任何影响的。而globals()返回的是全局变量的字典,修改其中的内容,值会真正的发生改变。
示例代码:
b = 5 # 定义一个全局变量
def test2():
a=1
locals()["a"] = 2 # 修改局部变量
print "a=", a
globals()["b"] = 6 # 修改全局变量
print "b=", b
if __name__ == '__main__':
test2()
输出为:
a= 1
b= 6
3、global 语句
如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局 的。我们使用global语句完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。
global语句被用来声明x是全局的——因此,当我们在函数内把值赋给x的时候,这个变化也反映在我们在主块中使用x的值的时候。
你可以使用同一个global语句指定多个全局变量。例如global x, y, z。