Globals in nested functions

Bjoern Schliessmann usenet-mail-0306.20.chr0n0ss at spamgourmet.com
Thu Jun 21 09:45:35 EDT 2007


jm.suresh at no.spam.gmail.com wrote:

> def f():
>     a = 12
>     def g():
>         global a
>         if a < 14:
>             a=13
>     g()
>     return a
> 
> print f()
> 
> This function raises an error. Is there any way to access the a in
> f() from inside g().

Yes. Pass it to g when calling the latter and let g return the
result.

def f():
    a = 12

    def g(parm):
        if parm < 14:
            return 13
        else:
            return a

    a = g(a)
    return a

print f()

Strange refactoring though.

Regards,


Björn

-- 
BOFH excuse #400:

We are Microsoft.  What you are experiencing is not a problem; it is
an undocumented feature.




More information about the Python-list mailing list