Python:按名称访问嵌套函数

时间:2014-02-06 03:16:01

标签: python reflection nested-function

在函数内部,我可以使用dir()来获取嵌套函数列表:

>>> def outer():
...  def inner(): pass
...  print dir()
...
>>> outer()
['inner']

......但是那又怎样?如何通过名称访问这些功能?我看不到__dict__属性。

1 个答案:

答案 0 :(得分:2)

第一:你确定要这么做吗?这通常不是一个好主意。那就是说,

def outer():
    def inner(): pass
    locals()['inner']()

您可以使用locals获取本地变量值的字典,然后查找'inner'的值以获取该函数。但是,不要尝试编辑局部变量dict;它不会正常工作。


如果要访问外部函数外部的内部函数,则需要以某种方式存储它。局部变量不会成为函数属性或类似的东西;它们在函数退出时被丢弃。您可以返回功能:

def outer():
    def inner(): pass
    return inner

nested_func = outer()
nested_func()