1. 程式人生 > 程式設計 >Python 如何定義匿名或行內函數

Python 如何定義匿名或行內函數

問題

你想為 sort() 操作建立一個很短的回撥函式,但又不想用 def 去寫一個單行函式, 而是希望通過某個快捷方式以內聯方式來建立這個函式。

解決方案

當一些函式很簡單,僅僅只是計算一個表示式的值的時候,就可以使用lambda表示式來代替了。比如:

>>> add = lambda x,y: x + y
>>> add(2,3)
5
>>> add('hello','world')
'helloworld'
>>>

這裡使用的lambda表示式跟下面的效果是一樣的:

>>> def add(x,y):
...   return x + y
...
>>> add(2,3)
5
>>>

lambda表示式典型的使用場景是排序或資料reduce等:

>>> names = ['David Beazley','Brian Jones',...     'Raymond Hettinger','Ned Batchelder']
>>> sorted(names,key=lambda name: name.split()[-1].lower())
['Ned Batchelder','David Beazley','Raymond Hettinger','Brian Jones']
>>>

討論

儘管lambda表示式允許你定義簡單函式,但是它的使用是有限制的。 你只能指定單個表示式,它的值就是最後的返回值。也就是說不能包含其他的語言特性了, 包括多個語句、條件表示式、迭代以及異常處理等等。

你可以不使用lambda表示式就能編寫大部分python程式碼。 但是,當有人編寫大量計算表示式值的短小函式或者需要使用者提供回撥函式的程式的時候, 你就會看到lambda表示式的身影了。

以上就是Python 如何定義匿名或行內函數的詳細內容,更多關於Python 定義匿名或行內函數的資料請關注我們其它相關文章!