2013-10-06 24 views
2

首先,對於令人困惑的標題感到抱歉,但它是我想到描述它的唯一方法。最近我接觸到的一門課程提出了一個問題,即用一個參數(x)定義一個函數,該函數返回具有一個參數(y)的另一個函數,該參數本身會返回x * y。我們被要求寫了這一點,無論是使用我選擇了lamdas正常功能或拉姆達的,寫這個:Python將值傳遞給返回語句函數

def create_multiplier (x): 
    return lambda y: y * x 

input1 = int(raw_input("Please enter your initial number for our multiplier")) 
multi = create_multiplier(input1) 
input2 = int(raw_input("Please enter your second number for our multiplier")) 
print input1, " times by ", input2, " = " ,multi(input2) 

但是我現在好奇他們是如何期待我們只能對函數來實現它,起初我以爲也許你會在第一個函數中將你的第一個數字傳遞給x,然後把第二個函數傳遞給y,並且因爲我們在第一個函數內部返回第二個函數,我們可以使用x就像嵌套變量一樣。這被擊落快速

我明白,如果你不願意答覆,因爲這是課程,但這只是讓我好奇,你是如何實現它,而無需預先設定我們在一個lambda的x,也許我只是看它奇怪而且顯而易見。謝謝你的回覆

+0

爲什麼你所有的句子都是通過? – Groditz

+0

對不起,但從來沒有聽說過這個術語,你能解釋一下嗎? – ulthanex

+0

這就是當你把你所有的句子連接在一起的時候,沒有逗號或者任何東西,這真的很煩人。 – Groditz

回答

4

lambda只是一個煩人的;-)寫一個函數(def)的快捷方式。因此,例如,

def create_multiplier(x): 
    def inner_function(y): 
     return x*y 
    return inner_function 

做同樣的事情。

後來:不是是一樣的東西。你的lambda實際上返回y*x,而不是x*y ;-)

+0

看,這就是我應該猜到的東西的意思,但它是分析東西的方式,它們關於兩個功能的方式,一個返回另一個功能等等,一直試圖通過具有這兩個功能來做到這一點單獨定義然後互相稱呼它們,應該被絞死,他們沒有說我可以在另一箇中定義它。非常感謝你 – ulthanex