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]
本文通过具体示例对比了Python2与Python3中局部变量在不同情况下的更改方式,包括如何使用nonlocal关键字来修改封闭作用域内的变量,以及Python2中通过mutable对象间接改变变量值的方法。
8046

被折叠的 条评论
为什么被折叠?



