调用函数作为参数传递而没有括号

时间:2014-10-09 11:25:25

标签: python

我有一个相对较大的程序,我已将其拆分为模块 - 因此,我正在删除的不同模块中的函数之间存在很多重叠。

我遇到的一个问题是需要将函数和类作为参数传递给其他函数和类 - 在它们被定义之前。

我知道我可以将函数名称作为字符串传递并使用exec(),理论上我也可以使用带有标准化键的字典。但是我想知道如何通过将函数用作另一个函数参数中的对象来调用函数。

我知道多个函数和类将带括号的函数作为参数并调用它们 - 所以我确信它是可能的。问题是如何?

基本的例子是:

def func1(some_function):
    #call some_function here

并在一个单独的模块中:

def func2():
    print("Success!")

最终结果将是:

>>>func1(func2)
'Success!'

我正在使用Python 3.4。我还假设适用于函数的函数适用于类。

2 个答案:

答案 0 :(得分:2)

def func1(some_function):
    #call some_function here

简单地变成

def func1(some_function):
    some_function()

函数是python中的第一类对象

答案 1 :(得分:1)

这就是我所做的,当然你可以用a替换任何名称

def func1():
    return "ess"
def func2(x):
    return "succ" + x

a = func1()

print func2(a)