2016-10-19 53 views
1

雖然挖成lambda我定義了下面這段代碼:爲什麼使用LAMBDA發送功能作爲參數給另一個函數

def f2(number, lambda_function): 
    return lambda_function(number) 

def f1(number): 
    return f2(number, lambda x: x*2) 

number = 2 
print f1(number) 

雖然我不同意這樣的代碼看起來很酷我不知道爲什麼就沒有我只是把它放下采用更傳統的方法,比如:

def f1(number): 
    return number*2 

number = 2 
print f1(number) 

據我所知,一些語言依賴的函數式編程更比Python。但是在Python中,如果我只是避免lambda和函數編程技巧,那麼最終會得到更少的行和更易讀的友好代碼。如果不使用lambda,可以修改上面的代碼來說明任務無法完成的情況? Python中lambda的用途是什麼?你能向我展示lambda真正「閃耀」的例子嗎?可能是使用lambda簡化了代碼的例子嗎?

回答

3

lambda函數像普通函數一樣工作,但用於只執行一次的情況。那麼,爲什麼要創建消息體並定義函數呢?例如,排序元組的列表:

>>> my_list = [(1, 3) , (4, 8), (2, 3), (1, 6)] 
>>> my_list.sort(key=lambda x: (x[0], -x[1])) 
>>> my_list 
[(1, 6), (1, 3), (2, 3), (4, 8)] 

在這裏,我在增加指數0的順序,然後遞減指數1的順序排序my_list。但list.sort()作爲函數接受key的值。除了定義該功能並在此處傳遞該功能之外,在其內部調用lambda更清晰。

因爲這些可以寫成表達式,所以它們在文檔中被稱爲Lambda Expression,而不是Lambda函數

還可以閱讀:Why are Python lambdas useful?

在你給的例子,我不認爲使用lambda有任何有用的。

相關問題