J'ai un exemple trivial:problème portée Python
def func1():
local_var = None
def func(args):
print args,
print "local_var:", local_var
local_var = "local"
func("first")
func("second")
func1()
Je me attends à la sortie soit:
first local_var: None second local_var: local
Cependant, ma sortie réelle est:
first local_var: Traceback (most recent call last): File "test.py", line 13, in func1() File "test.py", line 10, in func1 func("first") File "test.py", line 6, in func print "local_var:", local_var UnboundLocalError: local variable 'local_var' referenced before assignment
Ma compréhension de Les règles de portée de Python dictent que cela devrait fonctionner comme prévu. J'ai un autre code où cela fonctionne comme prévu, mais réduire un fragment de code non fonctionnel à son cas trivial ci-dessus ne fonctionne pas non plus. Donc je suis perplexe.
Merci! Cela explique pourquoi j'ai parfois eu le comportement attendu - quand je n'ai pas réaffecté ma variable locale dans la fonction (func() dans ce cas), tout allait bien. L'acte de l'assigner l'a rendu "très très local", comme vous le dites. –