2016-10-01 12 views
2

Ich bin neu in Python, wie können wir eine globale Variable verweisen, die den gleichen Namen wie lokale hat.Verweisen Sie auf eine globale Variable, die denselben Namen wie die lokale Variable in Python hat.

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

Sie können nicht noch macht es Sinn. Sie sollten sowohl das globale Status- als auch das Namens-Shadowing vermeiden. – jonrsharpe

+5

Sie könnten 'print (globals() [" spam "])' aber nicht. –

+0

Oder 'sys importieren; print (sys.modules [__ name __]. spam) ', aber es ist immer noch keine gute Idee –

Antwort

2

Es ist etwas nicht zu empfehlen, ich bin es im Interesse zu beantworten, wenn Sie neugierig sind, es zu fragen/tun:

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() 

Der Ausgang:

local spam 
global spam 
global spam 
Verwandte Themen