如:
def A(a):
print a
def B(func):
...
if __name__ = "__main__":
B(A(a))
我想收到消息:
A(a)
答案 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