python中Lambda表达式详解
如果你在学校读的是计算机科学专业,那么可能学过Lambda表达式,不过可能从来没有用过它。如果你不是计算机科学专业,它们看着可能有点儿陌生(或者只是“曾经学习过的东西”)。在这一节里,虽然我们不打算深入学习这类函数,但是会用几个例子来演示它们是如何用在网页抓取中的。
Lambda表达式本质上就是一个函数,可以作为变量传入另一个函数;也就是说,一个函数不是定义成f(x,y),而是可以定义成f(g(x),y)或f(g(x),h(y))的形式。BeautifulSoup允许我们把特定类型的函数作为参数传入find_all函数。唯一的限制条件是这些函数必须把一个标签对象作为参数并且返回布尔类型的结果。BeautifulSoup用这个函数来评估它遇到的每个标签对象,最后把评估结果为“真”的标签保留,把其他标签剔除。
例如,下面的代码就是获取有两个属性的所有标签:
bs.find_all(lambdatag:len(tag.attrs)==2)
这里,作为参数传入的函数是len(tag.attrs)==2。当该参数为真时,find_all函数将返回tag。即找出带有两个属性的所有标签,如下所示:
Lambda函数非常实用,你甚至可以用它来替代现有的BeautifulSoup函数:
bs.find_all(lambdatag:tag.get_text()== 'Ormaybehe\'sonlyresting?')
如果不使用Lambda函数,代码如下:
bs.find_all('',text='Ormaybehe\'sonlyresting?')
如果你能记住Lambda函数的语法,以及如何获取标签的属性,那么你可能再也不需要记住BeautifulSoup的语法了!
由于Lambda函数可以是任意返回True或者False值的函数,你甚至可以结合使用Lambda函数与正则表达式,来查找匹配特定字符串模式的属性的标签。
以上就是关于pythonLambda表达式的相关知识点内容,感谢大家的阅读和对毛票票的支持。