python中也存在闭包的概念,但是python的闭包不好的问题在于,默认是只读的,好在python3.0的版本支持了关键字nonlocal。看如下例子
def outer():
var = 0
def inner():
var += 1
yield var
return inner
这种写法会出现域错误的提示,是因为var+=1而 引起的,如果不是赋值,只是访问的话是没有问题的。
python中也存在闭包的概念,但是python的闭包不好的问题在于,默认是只读的,好在python3.0的版本支持了关键字nonlocal。看如下例子
def outer():
var = 0
def inner():
var += 1
yield var
return inner
这种写法会出现域错误的提示,是因为var+=1而 引起的,如果不是赋值,只是访问的话是没有问题的。