2017-08-29 137 views
0

我有兩個函數,每個函數都帶兩個參數。 第一個函數a打印出兩個參數(整數)的組合結果,第二個函數b打印出由空格分隔的兩個參數。如何返回一個包含兩個函數的函數和兩個參數

所以,如果我執行a(1,2)它會打印出3,而b(1,2)會打印出1 2

我試圖創建一個返回lambda作爲lambda x, y : (a(x,y), b(x,y)) 功能,但是當我嘗試過了,也沒有打印任何東西,出。

這個函數裏面有它自己的print所以我猜想當創建lambda時,它應該打印出結果然後返回一個超級函數。

def a(c, d): 
    print('*', a) 
    return total 

def b(c, d): 
    print('**', b) 
    return echo 

def both(f, g): 
    return lambda x, y: (a(x, y), b(x, y)) 
+1

'both'應該帶兩個函數並返回一個調用它們的函數,或者它應該採用兩個整數並且同時調用'a'和'b'?你似乎混淆了你要做的選擇。 – user2357112

+1

示例代碼中的函數不會執行文本所說的內容。如果您發佈示例代碼,它應該與您的問題相關。 – Tomalak

+0

它應該返回並同時執行它們 – Cal

回答

1

您的lambda函數從未實際調用。從both函數返回時,您需要保存它。然後,你可以打電話給它。

下面是一個例子:

super_function = both(1, 2) 
super_function(1, 2) 

有沒有在你的邏輯其他錯誤無數,但將「修理」你的問題。

1

我不清楚你想要做什麼。這是我的理解。

我已經定義了函數ab,因爲您似乎已經描述了它們。

def a(c, d): 
    return c+d 

def b(c, d): 
    return '%s %s'%(c,d) 

class Both保留與類似定義的參數組的兩個函數的定義。它的__call__方法返回相同參數列表的兩個函數的結果作爲二元組。

class Both: 
    def __init__(self, f, g): 
     self.f = f 
     self.g = g 
    def __call__ (self, *args): 
     return (self.f(*args),self.g(*args)) 

這些最終行只是兩個略有不同的使用class的方式。

both = Both(a,b); print (both(1,2)) 

print (Both(a,b)(3,5)) 
相關問題