425 Stimmen

Was ist der Geltungsbereich einer in einer if-Anweisung initialisierten Variablen?

Ich bin neu in Python, so dass dies wahrscheinlich eine einfache Scoping-Frage ist. Der folgende Code in einer Python-Datei (Modul) verwirrt mich etwas:

if __name__ == '__main__':
    x = 1

print x

In anderen Sprachen, in denen ich gearbeitet habe, würde dieser Code eine Ausnahme auslösen, da die x ist eine lokale Variable in der if Anweisung und sollte nicht außerhalb von ihr existieren. Aber dieser Code wird ausgeführt und gibt 1 aus. Kann jemand dieses Verhalten erklären? Sind alle Variablen, die in einem Modul erstellt werden, global/für das gesamte Modul verfügbar?

7voto

Olivier Verdier Punkte 43894

Ja. Das gilt auch für for Umfang. Aber natürlich keine Funktionen.

In Ihrem Beispiel: Wenn die Bedingung in der if Aussage falsch ist, x wird jedoch nicht definiert.

3voto

SilentGhost Punkte 285785

Sie führen diesen Code von der Kommandozeile aus, also if Bedingungen wahr ist und x eingestellt ist. Vergleichen Sie:

>>> if False:
    y = 42

>>> y
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    y
NameError: name 'y' is not defined

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X