1. 程式人生 > 程式設計 >python中Lambda表示式詳解

python中Lambda表示式詳解

如果你在學校讀的是電腦科學專業,那麼可能學過 Lambda 表示式, 不過可能從來沒有用過它。如果你不是電腦科學專業,它們看著可能 有點兒陌生(或者只是“曾經學習過的東西”)。在這一節裡,雖然我們 不打算深入學習這類函式,但是會用幾個例子來演示它們是如何用在網 頁抓取中的。

Lambda 表示式本質上就是一個函式,可以作為變數傳入另一個函式; 也就是說,一個函式不是定義成 f(x,y),而是可以定義成 f(g(x),y) 或 f(g(x),h(y)) 的形式。 BeautifulSoup 允許我們把特定型別的函式作為引數傳入 find_all 函 數。唯一的限制條件是這些函式必須把一個標籤物件作為引數並且返回 布林型別的結果。BeautifulSoup 用這個函式來評估它遇到的每個標籤對 象,最後把評估結果為“真”的標籤保留,把其他標籤剔除。

例如,下面的程式碼就是獲取有兩個屬性的所有標籤:

bs.find_all(lambda tag: len(tag.attrs) == 2)

這裡,作為引數傳入的函式是 len(tag.attrs) == 2。當該引數為真 時,find_all 函式將返回 tag。即找出帶有兩個屬性的所有標籤,如 下所示:

<div class="body" id="content"></div>
<span style="color:red" class="title"></span>

Lambda 函式非常實用,你甚至可以用它來替代現有的 BeautifulSoup 函 數:

bs.find_all(lambda tag: tag.get_text() ==  
'Or maybe he\'s only resting?')

如果不使用 Lambda 函式,程式碼如下:

bs.find_all('',text='Or maybe he\'s only resting?')

如果你能記住 Lambda 函式的語法,以及如何獲取標籤的屬性,那麼你 可能再也不需要記住 BeautifulSoup 的語法了!

由於 Lambda 函式可以是任意返回 True 或者 False 值的函式,你甚至 可以結合使用 Lambda 函式與正則表示式,來查詢匹配特定字串模式 的屬性的標籤。

以上就是關於python Lambda表示式的相關知識點內容,感謝大家的閱讀和對我們的支援。