反映/检查Python中的封闭变量

发布于 2021-01-29 18:03:47

如果我有:

def f(x):
  def g(y):
    return x + y
  return g

f2 = f(2)

有没有办法找到将要使用的x绑定f2?我看了看,inspect但无法确定某些frame内容是否适用。换句话说,我可以定义closed_vars()以下内容:

def closed_vars(anF):
    ... return ...

assert closedVars(f2) == {'x': 2}
关注者
0
被浏览
53
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您不必在inspect这里使用该模块。

    >>> dict(zip(f2.func_code.co_freevars, (c.cell_contents for c in f2.func_closure)))
    {'x': 2}
    

    在Python 2.7中工作



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看