assigning in nested functions

Fredrik Lundh fredrik at pythonware.com
Sun Oct 9 08:08:10 EDT 2005


"jena" wrote:

> I have code
>
> # BEGIN CODE
> def test():
>   def x():
>     print a
>     a=2 # ***
>
>   a=1
>   x()
>   print a
>
> test()
> # END CODE
>
> This code fails (on statement print a in def x), if I omit line marked
> ***, it works (it prints 1\n1\n). It look like when I assign variable in
> nested function, I cannot access variable in container function.
> I need to assign variable in container function, is any way to do this?

no.

see "Rebinding names in enclosing scopes" in the design document
for a discussion (and a workaround):

    http://www.python.org/peps/pep-0227.html

</F>






More information about the Python-list mailing list