def closure_add():
x = 3
def adder():
nonlocal x
x+=1
return x
return adder
a = closure_add()
b = closure_add()
print(a())
print(b())
print(b())
print(b())
输出结果为:
4
4
5
6
如果变量'b'保存了函数'adder'的作用域中的变量(x=3),那么无论您调用它多少次,输出都应该是'4'。
x+=1
是在做什么? - jasonharperx
是在b = closure_add()
这行代码中。随后对b()
的调用只会修改x
的那个实例。(还有另一个x
实例与变量a
相关联)。 - jasonharper