【发布时间】:2014-02-06 03:16:01
【问题描述】:
在函数内部,我可以使用 dir() 来获取嵌套函数的列表:
>>> def outer():
... def inner(): pass
... print dir()
...
>>> outer()
['inner']
...但是然后呢?如何按名称访问这些功能?我看不到 __dict__ 属性。
【问题讨论】:
标签: python reflection nested-function
在函数内部,我可以使用 dir() 来获取嵌套函数的列表:
>>> def outer():
... def inner(): pass
... print dir()
...
>>> outer()
['inner']
...但是然后呢?如何按名称访问这些功能?我看不到 __dict__ 属性。
【问题讨论】:
标签: python reflection nested-function
首先:您确定要这样做吗?这通常不是一个好主意。也就是说,
def outer():
def inner(): pass
locals()['inner']()
您可以使用locals 获取局部变量值的字典,然后查找'inner' 的值以获取函数。但是,不要尝试编辑局部变量 dict;它不会正常工作。
如果你想在外部函数之外访问内部函数,你需要以某种方式存储它。局部变量不会成为函数属性或类似的东西;当函数退出时它们被丢弃。可以返回函数:
def outer():
def inner(): pass
return inner
nested_func = outer()
nested_func()
【讨论】:
handler["foo"] = foo 这样添加几十行。如果可以的话,我会使用 lambdas...