2016-06-30 23 views
0

So lerne ich den Unterschied zwischen globalem und lokalen Vars in Python 2.7 und nach meinem VerständnisPython 2.7 - lokale vs globalem Vars

lokal var eine ist, die innerhalb einer Funktion und GLOBAR var definiert ist ist eine, die außerhalb der Funktion definiert ist.

ich diese einfache Funktion zu testen, erstellt, wie diese lokalen und globalen Variablen an, wenn sie in Kombination

def f(): 
    global s 
    print s 
    s = "Python is great." 
    print s 

Bevor ich die Funktion lief verwendet arbeiten, erklärte ich die globale s

s = "I love python!" 
f() 

Der Ausgang war :

>>> f() 
I love python 
Python is great 

Ich verstehe bis zu diesem Teil, aber was ich don Nicht verstehen ist, wenn ich den Lauf eine print s außerhalb der Funktion rufe, warum druckt es die lokale Variable anstelle der globalen Variable. Bedeutet dies, dass die globale Variable s einmal verwendet und verworfen wird?

>>> print s 
Python is great 

kann jemand bitte dies erklären?

Antwort

1

... was ich nicht verstehe, ist, wenn ich den Lauf einer print s außerhalb der Funktion aufrufen, warum es den Druck der lokalen Variablen anstelle der globale.

Es gibt keine lokale s innerhalb der Funktion. Die global s-Anweisung bewirkt, dass die Python-VM die s im globalen Gültigkeitsbereich verwendet, auch wenn sie gebunden wird.

+0

Also das heißt, wenn ich eine 'print s' ohne Erklärung der globalen' s', wird es den Wert von s wie in der Funktion definiert, richtig? (da kein globales s definiert ist?) –

+0

Wenn Sie die Anweisung 'global s' in der Funktion entfernen, dann wird das Aufrufen der Funktion' UnboundLocalError' auslösen, da der Compiler versucht, auf das lokale 's' in der ersten Zeile der Funktion (da Sie es innerhalb der Funktion gebunden haben). –

0

Sie deklarierten s als global in der Funktion überschreiben das Standardverhalten, indem Sie die global s-Anweisung verwenden. Da s jetzt ein globaler Wert ist und Sie ihm einen neuen Wert zugewiesen haben, ist diese Änderung global sichtbar.