1

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

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

……但是然后呢?如何按名称访问这些功能?我看不到__dict__属性。

4

1 回答 1

2

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

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

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


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

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

nested_func = outer()
nested_func()
于 2014-02-06T03:20:03.227 回答