我很难回答我们最近被问到的一个问题,作为Python中高阶函数练习的一部分。
问题是定义两个函数,一个不带参数,并通过if / else语句传递三个全局定义的函数c(),t()和f(),如果c()
为真,返回t()
否则返回f()
)。另一个函数是我们在c()
,t()
和f()
上评估的高阶函数,然后通过相同的if / else语句传递它们。
这些函数是不同的,我们的任务是通过定义三个函数c()
,t()
和f()
来看看如何使第一个函数返回1而第二个函数返回一个以外的函数
到目前为止,我已经意识到问题在于调用函数c()
,t()
和f()
,然后再将它们传递给if / else语句。然而,这还不足以激发解决方案。有人能够引导我朝着正确的方向前进吗?
以下是相关代码:
def if_function(condition, true_result, false_result):
if condition:
return true_result
else:
return false_result
def with_if_statement():
if c():
return t()
else:
return f()
def with_if_function():
return if_function(c(), t(), f())
def c():
return []
def t():
return 1
def f():
return 1
答案 0 :(得分:0)
您可以轻松地将callable作为函数参数传递,而无需调用它们。
def cond():
return True
def f():
return 2
def g():
time.sleep(60)
def if_function(condition_callable, call_if_true, call_if_false):
if condition_callable():
return call_if_true()
else:
return call_if_false()
if_function(cond, f, g) # evaluates immediately, does not sleep since g is never evaluated.