我看这个帖子:了解lambda函数
Python BeautifulSoup: wildcard attribute/id search
在这个问题的答案给出了解决方案:
dates = soup.findAll("div", {"id" : lambda L: L and L.startswith('date')})
我想我明白在Python lambda函数。然而,当我看到这个 lambda L: L and L.startswith('date')
,我明白它最终会返回一个包含'date'的值。但为什么它写为L and L.startswith('date')
?这看起来lambda函数正在返回一个字符串和一个布尔语句。
有人可以解释这背后的逻辑吗?
认为它是一个过滤器,你发现的“格”的所有实例在具有与启动属性“ID”汤字符串“日期”。在这种情况下,lambda是一个谓词函数。 “L和L.startswith('date')”在L为None的情况下是必要的,在这种情况下它会抛出异常。 –
@Marcin我明白你的意思,我错了。删除了我的评论,对不起我引起了混淆 –
@Chinegro如你所见,你之前被误导了。 – Marcin