2016-10-01 145 views
2

我是python的新手,我們如何引用與本地名稱相同的全局變量。引用與Python中的局部變量名稱相同的全局變量

spam = 'global spam' 
def scope_test(): 
    spam = 'local spam' 
    print(spam) 
    # access global spam and print or assign to the local spam 
    # print(global.spam) 
    # local.spam = global.spam (something like this) 

scope_test() 
+0

你不能,也沒有意義。你應該避免全局狀態和名字遮蔽。 – jonrsharpe

+5

你可以'打印(全局()[「垃圾郵件」])''但不。 –

+0

或'import sys; print(sys.modules [__ name __]。spam)',但它仍然不是一個好主意 –

回答

2

這是不推薦的,我回答它的緣故,如果你好奇地問什麼/做到這一點:

Python 3.5.2 
>>> spam = 'global spam' 
>>> def scope_test(): 
..  spam = 'local spam' 
..  print(spam) 
..  # access global spam and print or assign to the local spam 
..  print(globals()['spam']) 
..  spam = globals()['spam'] 
..  print(spam) 
..  
>>> scope_test() 

輸出:

local spam 
global spam 
global spam