On 2007-06-21, [EMAIL PROTECTED] <[EMAIL PROTECTED]> 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(). > > I could find few past discussions on this subject, I could not > find the simple answer whether it is possible to do this > reference.
Python's scoping rules don't allow this. But you can 'box' the value into a list and get the intended effect. def f(): a = [12] def g(): if a[0] < 14: a[0] = 13 g() return a[0] You'll get better results, in Python, by using a class instances instead of closures. Not that there's anything wrong with Python closures, but the scoping rules make some fun tricks too tricky. -- Neil Cerutti -- http://mail.python.org/mailman/listinfo/python-list