2016-10-01 115 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