在调用之前使用条件语句创建函数对象

时间:2019-05-03 05:50:55

标签: python python-3.x function

我定义了两个函数(fun1和fun2),它们返回一些值,并在fun3中调用其中一个函数。我可以在for循环内执行条件,但是有没有一种方法可以在之前选择。如此处所示。还是有其他方法?

def fun1(a1,b1)
def fun2(a1,b1)

def fun3(a1,b1,some_para):

    if some_para:
        sel_func = fun1()
    else:
        sel_func = fun2()

    for Loop:
        sel_func(a1,b1)

3 个答案:

答案 0 :(得分:3)

函数是对象。只是分配函数而不是调用它。以您的示例为例:

def fun3(a1, b1, some_para):

    sel_func = fun1 if some_para else fun2

    for Loop:
        sel_func(a1, b1)

答案 1 :(得分:1)

def fun1(a1,b1)
def fun2(a1,b1)


def fun3(a1,b1,some_para = None):
    sel_func = fun1  if some_para else fun2
    for Loop:
        sel_func(a1,b1)

在函数声明中使用some_para =None,当您调用此函数时,您始终需要将参数传递给它,并且如果不传递任何值,则每次都会运行fun1,否则会发生属性错误。如果none使用并且没有传递任何值fun2将执行,否则fun1将执行。

答案 2 :(得分:0)

您可以将函数作为参数传递给外部,以便于阅读:

def fun3(a1, b1, sel_func):
    for Loop:
        sel_func(a1, b1)

# call fun3 with whatever funtion you need in each momment
fun3(a, b, fun1) 
fun3(a, b, fun2)