2015-05-15 35 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