使用如下的python模块:
def mult(n):
a = n-1
def multn(x):
b = a
print (n*x)
return multn
f = mult(3)
f(4)
print (f.__closure__)
for c in f.__closure__:
print (c.cell_contents)
print (f.__code__.co_freevars)输出为:
12
(<cell at 0x10fd20360: int object at 0x7f8f9bc0b760>, <cell at 0x10fd20398: int object at 0x7f8f9bc0b748>)
2
3
('a', 'n')有没有一种更简单的方法或包,可以创建一个从clo_var_name到clo_val的字典?
所以{'a': 2, 'n': 3}
感谢你们所有的进阶。
发布于 2017-07-08 05:59:33
inspect.getclosurevars会给你一个闭包引用变量的字典。
import inspect
inspect.getclosurevars(f)
# returns:
ClosureVars(nonlocals={'a': 2, 'n': 3}, globals={}, builtins={'print': <built-in function print>}, unbound=set())https://stackoverflow.com/questions/44977419
复制相似问题