def b():
b = 1
def bchange():
b += 1 #UnboundLocalError: local variable 'b' referenced before assignment
bchange()
print b
Python 3:
def b():
b = 1
def bchange():
nonlocal b
b += 1
bchange()
print(b)
Python 2 只能这样(利用 mutable 对象):
def b():
b = [1]
def bchange():
b[0] += 1
bchange()
print b[0]