如何将__name__用于带有关键字参数的函数?

Chr*_*ris 0 python function keyword-argument

你如何使用我希望传递关键字参数的函数的名称

例如,我有以下功能:

def func(keyword1='A'):
     print keyword1
Run Code Online (Sandbox Code Playgroud)

我可以做这个:

func.__name__
>> 'func'
Run Code Online (Sandbox Code Playgroud)

但是,我想这样做:

func(keyword1='B').__name__
>>> 'func'
Run Code Online (Sandbox Code Playgroud)

我想这样做的原因是因为我有另一种方法将该函数作为参数接受,它需要拉出函数的名称并使用不同的关键字运行该函数.

所以,我真正想要做的就是让这个功能起作用:

def Function_Name_And_Result(x):
    print x.__name__ + x()

Function_Name_And_Result(func(keyword1='B'))
>> funcB
Run Code Online (Sandbox Code Playgroud)

bru*_*ers 5

Python的函数也是对象,因此您可以像传递任何其他对象一样传递它们.你正在做什么(显然无法工作)是传递调用函数的结果.你想要的是传递函数和函数的参数:

def print_function_name_and_result(func, *args, **kw):
    print "%s : %s" % (func.__name__, func(*args, **kw))

print_function_name_and_result(func, keyword1='B')
>> func : B
Run Code Online (Sandbox Code Playgroud)