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 
  • Python überschreibt Variablen in verschachtelten Funktionen
  • Variabler Bereich (Python Newbie)
  • Python eval (kompilieren (...), Sandkasten), Globals gehen in Sandbox, wenn nicht in def, warum?
  • Mit einer Variablen in einem Versuch, Fang, endgültige Aussage, ohne es draußen zu erklären
  • Funktion Ortsname Bindung aus einem äußeren Bereich
  • Warum ist der Ort zum Zeitpunkt der Kompilierung bestimmt?
  • Globals und Einheimische in python exec ()
  • Scoping in Python 'für' Schleifen
  • Lambda-Funktion acessing außerhalb variabel [duplicate]
  • Generierung von Funktionen innerhalb der Schleife mit Lambda-Ausdruck in Python
  • Python-Funktion Anrufe sind Blutungen Umfang, stateful, nicht zu initialisieren Parameter?
  • Python ist die beste Programmiersprache der Welt.