intricated functions: how to share a variable

Diez B. Roggisch deets at nospam.web.de
Wed Aug 5 12:39:54 CEST 2009


TP wrote:

> Hi everybody,
> 
> See the following example:
> 
> #########
> def tutu():
> 
>     def toto():
> 
>         print a
>         a = 4
>         print a
> 
>     a=2
>     toto()
> 
> tutu()
> ##########
> 
> I obtain the following error:
> "UnboundLocalError: local variable 'a' referenced before assignment"
> 
> This is because Python looks in the local context before looking in the
> global context.
> 
> The use of "global a" in toto() does not help because global allows to
> force Python to look for the variable at the module level.
> 
> So, how to share a variable between intricated functions?

You could use a class :)

Another often used trick is to have a mutable container-object, like this:

def tutu():
   a = [2]

   def toto():
       a[0] = 4
    
   toto()
   
Diez



More information about the Python-list mailing list