如何用 python 写出像 javascript 这样的闭包?
var foo = function(n){
var count = n;
function bar(){
n = count
count+=1;
return n
}
return bar
}
>>>p = foo(10)
>>>p()
10
>>>p()
11
>>>p()
12
python 由于作用域的关系,函数内可以访问函数外部环境变量的值。但是不能对这个外部的环境变量进行操作。
好像 python 的闭包不是这么用的?
两个函数之间共享一个变量最方便的还是在一个 class 中用 self ?
def func(data):
count = data
def wrap():
count += 1
return count
return wrap
>>>p = func(10)
>>>p()
UnboundLocalError: local variable 'count' referenced before assignment
#但是不是赋值,而是用一个数组保存数组,就可以
def func(data):
count = [data]
def wrap():
count[0] += 1
return count[0]
return wrap
>>>p = func(10)
>>>p()
11
>>p()
12
>>p()
13
谁能具体解释一下这个的原因?
火拳v艾斯
10 years, 4 months ago