Zweifel über python variablen Bereich

Mögliche Duplikat:
Kurzbeschreibung der Python Scoping Regeln

Ich schrieb zwei einfache Funktionen:

# coding: utf-8 def test(): var = 1 def print_var(): print var print_var() print var test() # 1 # 1 def test1(): var = 2 def print_var(): print var var = 3 print_var() print var test1() # raise Exception 

Im Vergleich dazu gibt test1() den Wert nach dem print var , dann heben Sie eine Ausnahme an: UnboundLocalError: local variable 'var' referenced before assignment , ich denke, den Moment nenne ich den inneren print var , var hat einen Wert von 2, bin ich falsch?

One Solution collect form web for “Zweifel über python variablen Bereich”

Ja, du bist hier falsch. Die Funktionsdefinition stellt einen neuen Bereich vor.

 # coding: utf-8 def test(): var = 1 def print_var(): print var <--- var is not in local scope, the var from outer scope gets used print_var() print var test() # 1 # 1 def test1(): var = 2 def print_var(): print var <---- var is in local scope, but not defined yet, ouch var = 3 print_var() print var test1() # raise Exception 
  • Warum ist eine Klassenvariable nicht im Listenverständnis definiert, sondern eine andere ist?
  • String mit 'f' Präfix in python-3.6
  • "Lokale Variable referenziert vor Zuordnung" - nur Funktionen?
  • Globals und Einheimische in python exec ()
  • Warum erbt keine Unterfunktion den Bereich in Python?
  • Pythonumfang [doppelte]
  • Lambda-Funktion acessing außerhalb variabel [duplicate]
  • Scoping in Python 'für' Schleifen
  • Warum ist der Ort zum Zeitpunkt der Kompilierung bestimmt?
  • Variable Bereiche in Python-Klassen
  • Warum können Funktionen in Python-Druckvariablen im Umschließungsbereich funktionieren, können sie aber nicht in der Zuordnung verwenden?
  • Python ist die beste Programmiersprache der Welt.