有没有办法修改闭包内的其中一个变量的绑定值?看一下这个例子来更好地理解它.
def foo():
var_a = 2
var_b = 3
def _closure(x):
return var_a + var_b + x
return _closure
localClosure = foo()
# Local closure is now "return 2 + 3 + x"
a = localClosure(1) # 2 + 3 + 1 == 6
# DO SOME MAGIC HERE TO TURN "var_a" of the closure into 0
# ...but what magic? Is this even possible?
# Local closure is now "return 0 + 3 + x"
b = localClosure(1) # …Run Code Online (Sandbox Code Playgroud) 如果我有:
def f(x):
def g(y):
return x + y
return g
f2 = f(2)
Run Code Online (Sandbox Code Playgroud)
有没有办法找到f2将使用的'x'绑定?我看了检查,但无法判断是否有一些'框架'的东西适用.换句话说,我可以在下面定义一个closedVars():
def closed_vars(anF):
... return ...
assert closedVars(f2) == {'x': 2}
Run Code Online (Sandbox Code Playgroud)