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?

  • UnboundLocalError bei der Manipulation von Variablen ergibt inkonsistentes Verhalten
  • Globals und Einheimische in python exec ()
  • Mit einer Variablen in einem Versuch, Fang, endgültige Aussage, ohne es draußen zu erklären
  • Wie kann ich auf eine Klassenvariable in einem Initialisierer in Python zugreifen?
  • Python: Wie erfasse ich eine Variable, die in einem nicht globalen Ahnenumfang angegeben ist?
  • Warum ist eine Klassenvariable nicht im Listenverständnis definiert, sondern eine andere ist?
  • Variabler Bereich (Python Newbie)
  • Wie kann man Variablen eines anderen Bereichs ändern?
  • 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 ist die beste Programmiersprache der Welt.