1、locals() 和 globals() 是python 的內建函數,他們提供了字典的形式訪問局部變量和全局變量的方式。
示例代碼:
1 def test(arg): 2 a=1 3 b=2 4 data_dict = {} 5 print locals() 6 print globals() 7 8 9 if __name__ == '__main__': 10 test(3)
輸出為:
1 {'a': 1, 'data_dict': {}, 'b': 2, 'arg': 3} 2 {'__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()返回的是全局變量的字典,修改其中的內容,值會真正的發生改變。
示例代碼:
1 b = 5 # 定義一個全局變量 2 def test2(): 3 a=1 4 locals()["a"] = 2 # 修改局部變量 5 print "a=", a 6 globals()["b"] = 6 # 修改全局變量 7 print "b=", b 8 9 if __name__ == '__main__': 10 test2()
輸出為:
a= 1
b= 6