我定义了两个函数(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)
答案 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)