首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为闭包函数创建闭包变量名到值的字典。Python3.x

如何为闭包函数创建闭包变量名到值的字典。Python3.x
EN

Stack Overflow用户
提问于 2017-07-08 02:24:34
回答 1查看 333关注 0票数 0

使用如下的python模块:

代码语言:javascript
复制
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)

输出为:

代码语言:javascript
复制
12
(<cell at 0x10fd20360: int object at 0x7f8f9bc0b760>, <cell at 0x10fd20398: int object at 0x7f8f9bc0b748>)
2
3
('a', 'n')

有没有一种更简单的方法或包,可以创建一个从clo_var_nameclo_val的字典?

所以{'a': 2, 'n': 3}

感谢你们所有的进阶。

EN

回答 1

Stack Overflow用户

发布于 2017-07-08 05:59:33

inspect.getclosurevars会给你一个闭包引用变量的字典。

代码语言:javascript
复制
import inspect

inspect.getclosurevars(f)

# returns:

ClosureVars(nonlocals={'a': 2, 'n': 3}, globals={}, builtins={'print': <built-in function print>}, unbound=set())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44977419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档