从python中的内部函数对象获取外部函数的名称

时间:2016-01-05 15:54:09

标签: python

在python中假设一个嵌套函数,其中outer表示外部函数,inner表示内部函数。外部函数提供内部函数的参数化,并返回此参数化函数的实例。

我想获得外部函数的名称,给出外部函数返回的内部函数的实例。 代码如下:

def outer(a):
    def inner(x):
        return x*a
    return inner
p = outer(3)
print p  # prints inner
print p(3)  # prints 9

如何只打印outer打印外部函数的名称,即p? 谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用functools.wraps

from functools import wraps

def outer(a):
    @wraps(outer)
    def inner(x):
        return x*a
    return inner
p = outer(3)
print p  # <function outer at ...>

答案 1 :(得分:0)

这绝不是一个优雅的解决方案,我个人不会使用它。但它回答了你问的问题。

def outer(a):
    def inner(x):
        return x*a
    inner.__name__ = 'outer'
return inner

print p
<function outer at 0x10eef8e60>