2015-05-15 89 views
0

说我有这个功能的可选参数(一个很简单的功能只是为了了解我的点):使用一个函数作为另一个函数

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_outFalse

当我尝试这个虽然f_out永远是True不管x。如何获得值f_out时,实际调用函数f

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

回答

3

您在声明中调用函数f_out。你想通过函数本身作为参数,并调用它里面g

def g(x, f_out=f): 
    return f_out(x) 
+0

哦,是的,这是有道理的!非常感谢。 – Motmot

0

f_out = f(x)尝试在该函数声明(其中没有定义的全局x失败)时调用f(),而不是当它被调用。试试这个:

def g(x, f_out=f): 
    return f_out(x) 

这与参数x调用f()并返回g()它的价值。

+0

非常感谢,我现在明白了。 – Motmot