2
def foo():
    print "I am foo"
    def bar1():
       print "I am bar1"
    def bar2():
       print "I am bar2"
    def barN():
       print "I am barN"


funobjs_in_foo = get_nest_functions(foo)

def get_nest_functions(funobj):
    #how to write this function??

如何获取所有嵌套的函数对象?我可以通过 funobj.func_code.co_consts 获取嵌套函数的代码对象。但是我还没有找到一种方法来获取嵌套函数的函数对象。

任何帮助表示赞赏。

4

1 回答 1

6

如您所见,foo.func_code.co_consts仅包含代码对象,而不包含函数对象。

您不能仅仅因为它们不存在而获取函数对象。每当调用函数时都会重新创建它们(并且仅重用代码对象)。

确认使用:

>>> def foo():
...     def bar():
...         print 'i am bar'
...     return bar
....
>>> b1 = foo()
>>> b2 = foo()
>>> b1 is b2
False
>>> b1.func_code is b2.func_code
True
于 2013-04-26T09:00:03.700 回答