将Python函数作为参数传递而不执行它?

时间:2017-04-22 10:16:47

标签: python function kwargs

我有这个功能:

def a(one, two, the_argument_function):
    if one in two:
        return the_argument_function

我的the_argument_function看起来像这样:

def b(do_this, do_that):
    print "hi."

以上两个都导入到文件“main_functions.py”,我的最终代码如下所示:

print function_from_main(package1.a, argument, package2.b(do_this, do_that)

“a”函数中的“if two in two”有效,但“b”函数在传递给“function_from_main”时仍然执行,而不等待“a”中的检查,看它是否确实应该执行。

我该怎么办?

1 个答案:

答案 0 :(得分:3)

package2.b(do_this, do_that)是函数调用(函数名后跟括号)。相反,您应该只传递函数名package2.b函数a

您还需要修改函数a,以便在满足条件时调用函数

# function a definition 
def a(one, two, the_argument_function, argument_dict):
    if one in two:
        return the_argument_function(**argument_dict)

def b(do_this, do_that):
    print "hi."

# function call for a
a(one, two, b, {'do_this': some_value, 'do_that': some_other_value})