reorx
5/22/2014 - 8:28 AM

sub_function_scope_test.py

>>> def foo():
...     a = 1
...     def foo_a():
...         a = 2
...         print 'foo_a a:', a
...     foo_a()
...     print 'foo a:', a
...
>>> foo()
foo_a a: 2
foo a: 1


>>> def foo():
...     class A: pass
...     a = A()
...     b = 1
...     def foo_a():
...         a.c = b
...     foo_a()
...     print a.__dict__
...     print a.c
...
>>> foo()
{'c': 1}
1


>> n = 1
>>> def foo():
...     print n
...
>>> foo()
1


>>> n = 1
>>> def foo():
...     n + 1
...
>>> foo()


>>> n = 1
>>> def foo():
...     n = n + 1
...
>>> foo()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in foo
UnboundLocalError: local variable 'n' referenced before assignment