说我有这个功能(一个非常简单的功能只是为了让我的观点得以实现):
/
现在我想在另一个函数中使用此函数作为可选参数,例如我试过这样的事情:
def f(x):
if x:
return(True)
return(False)
所以基本上如果我做def g(x, f_out = f(x)):
return(f_out)
输出应为g(1)
,如果我做True
我希望输出为g(0)
,为False
是f(0)
,因此False
是f_out
。
当我尝试这一点时,无论False
如何f_out
总是True
。如何在获取值x
时实际调用函数f
?
我实际上使用这个原则的代码显然更复杂但是它的想法是一样的;我在某些f_out
中有一个可选参数,它使用function1
中已有参数的参数调用不同的function2
,例如我的例子中是function1
。 (对不起,我知道这可能是一种不太清楚的解释方式。)
答案 0 :(得分:3)
您正在声明中调用函数f_out
。您希望将函数本身作为参数传递,并在g
:
def g(x, f_out=f):
return f_out(x)
答案 1 :(得分:0)
f_out = f(x)
尝试在声明函数时调用f()
(在没有定义全局x
的情况下失败),而不是在调用它时。试试这个:
def g(x, f_out=f):
return f_out(x)
这会使用参数f()
调用x
并从g()
返回其值。