如何获取嵌套的函数对象?

lim*_*imi 2 python

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??
Run Code Online (Sandbox Code Playgroud)

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

任何帮助表示赞赏.

Kos*_*Kos 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
Run Code Online (Sandbox Code Playgroud)