在另一个函数中使用一个函数作为可选参数

时间:2015-05-15 12:56:00

标签: python function optional-parameters

说我有这个功能(一个非常简单的功能只是为了让我的观点得以实现):

/

现在我想在另一个函数中使用此函数作为可选参数,例如我试过这样的事情:

def f(x):
    if x:
         return(True)
    return(False)

所以基本上如果我做def g(x, f_out = f(x)): return(f_out) 输出应为g(1),如果我做True我希望输出为g(0),为Falsef(0),因此Falsef_out

当我尝试这一点时,无论False如何f_out总是True。如何在获取值x时实际调用函数f

我实际上使用这个原则的代码显然更复杂但是它的想法是一样的;我在某些f_out中有一个可选参数,它使用function1中已有参数的参数调用不同的function2,例如我的例子中是function1。 (对不起,我知道这可能是一种不太清楚的解释方式。)

2 个答案:

答案 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()返回其值。