我想知道,Python 中是否有一个函数返回一个 dict 对象,其中包含用于封闭函数的非局部变量?喜欢vars()
or locals()
对于局部变量或globals()
对于全球的。
更新:
正如 thebjorn 所指出的,非局部变量是实际使用的嵌套函数中包含在local
列表。在3.2.3上有如下代码
>>> def func1():
... x=33
... def func2():
... # Without the next line prints {}
... print(x)
... print(locals())
... func2()
...
>>> func1()
returns {'x': 33}
.
公认的答案是非常非常错误的——f_back
给出caller,不是词法父范围!
Python 是词法作用域,而不是动态作用域!
你想要的可以使用描述的方法来完成here:
def nonlocals():
import inspect
caller = inspect.currentframe().f_back
return {k: v for k, v in caller.f_locals.items() if k in caller.f_code.co_freevars}
请注意,这将仅返回函数中实际使用的名称,而不是存在但未使用的非局部变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)