Comment définir le libre-variable en python?

La local/global/free variable définitions de python doc:

Si un nom est lié à un bloc, il est variable locale de ce bloc, sauf si déclaré que locale. Si un nom est lié au niveau du module, c'est un variable globale. (Les variables du module bloc de code sont locales et mondiales.) Si une variable est utilisée dans un bloc de code, mais pas définie, elle est un gratuit variable.


Code 1:

>>> x = 0
>>> def foo():
...   print(x)
...   print(locals())
... 
>>> foo()
0
{}

Code 2:

>>> def bar():
...   x = 1
...   def foo():
...     print(x)
...     print(locals())
...   foo()
... 
>>> bar()
1
{'x':1}

variables Libres sont retournés par locals() lorsqu'il est appelé à la fonction des blocs, mais pas dans la classe des blocs.


Dans Code 1, x est un variable globale, et il est utilisé mais non défini dans la foo().

Cependant, il n'est pas un gratuit variable, car il n'est pas retourné par locals().

Je pense que ce n'est pas ce que le doc a dit. Est-il une définition technique pour gratuit variable?

  • Très bonne question. Il y a des imprévus profondeurs derrière tout cela.
InformationsquelleAutor kev | 2012-10-16