如何获取最后的函数名称和参数?

时间:2018-01-03 08:59:25

标签: python python-3.x

如:

def A(a):
    print a

def B(func):
   ...

if __name__ = "__main__":
    B(A(a))

我想收到消息:

A(a)

2 个答案:

答案 0 :(得分:1)

首先,由于您明确声明使用Python 3,因此我必须评论您的语法不正确。由于Python 3将print(a)更改为函数,因此print需要括号。此外,在倒数第二行中应该有一个双等号,因为您正在检查相等性。

此代码应该可以正常工作:

def A(a):
    print(a)

def B(func):
   ...

if(__name__ == "__main__"):
    a = 1
    B(A(a))

您可以在打印之前将所需内容分配到a

编辑:再次查看问题之后,我很不确定您为什么期望/希望输出为"A(a)"。您将一个名为A()的函数传递给函数B(),通常用它做一些事情。 您可以通过将A()重写为:

来获取函数B的名称
def B(func):
    print(func.__name__)

但是,据我所知,函数B()无法知道函数A()在这种情况下可以采用哪些参数。

答案 1 :(得分:1)

不确定为什么要这样做,但模块inspect可以在这里提供帮助:

import inspect

def A(a):
    print(a)

def B(func, arg):
    print('{}({})'.format(func.__name__, inspect.getargs(func.__code__)[0][0]))
    return func(arg)

if(__name__ == "__main__"):
    a = 1
    B(A, a)

输出:

A(a)
1