如下代码
python2 中,解决方法可以是是把修改值放到列表或字典中,python3 中,可以使用nonlocal 声明完成修改
a = 10
def foo():
a = 100
执行foo() 结果 a 还是10
函数中对变量的赋值,变量始终绑定到该函数的局部命名空间,使用global 语句可以改变这种行为。
>>> a
10
>>> def foo():
... global a
... a = 100
...
>>> a
10
>>> foo()
>>> a
100
尽管可以层层向外(上)查找变量,但是! ..python2 只支持最里层作用域(局部变量)和全局命令空间(gloabl),也就是说内部函数不能给定义在外部函数中的局部变量重新赋值,比如下面代码是不起作用的
def countdown(start):
n = start
def decrement():
n -= 1
python2 中,解决方法可以是是把修改值放到列表或字典中,python3 中,可以使用nonlocal 声明完成修改
def countdown(start):
n = start
def decrement():
nonlocal n
n -= 1