python语言中lambda函数的使用方法

lambda简介

Python语言中的lambda函数,也就是匿名函数。lambda函数是Python中比较高级的用法,最近工做中有接触到这个函数的使用,因此总结一下它的常见用法。python

基本语法

能够经过下面表达式来定义lambda函数,请在ipython中尝试输入下面语句:web

In [1]: func = lambda x: x * 2
In [2]: func(4)
Out[2]: 8

上面定义的函数其实和下面经过def来定义函数的效果是同样的:api

In [3]: def new_func(x):
   ...:     return x * 2

In [4]: new_func(4)
Out[4]: 8

为何要使用lambda函数

不少状况下,直接使用def来定义函数就能够解决问题,可是lambda只须要单行就能够定义一个简单的函数,相比经过def来定义能够少写一些代码。还有就是有些状况下能够直接使用lambda函数,并且不须要定义函数的名称。lambda比较适合创建只在一个地方使用一次的简单函数,def来建立的函数能够比较复杂,并且适合在程序的多个地方调用。浏览器

常见的使用场景

主要有下面两种使用场景:app

selenium和appium自动化测试

在selenium和appium自动化测试中,常常会碰到要等待页面元素加载的状况。selenium的api中有提供一个WebDriverWait方法。 经过下面代码可使用selenium提供的等待页面元素加载方法,其中使用到了lambda函数。函数

代码片断

from selenium.webdriver.support.wait import WebDriverWait
--略--
# 使用selenium提供的WebDriverWait方法,每0.5秒检查一次定位的元素,超时设置是2秒
WebDriverWait(browser, 2).until(
        lambda driver: driver.find_element_by_id('login'))  #使用lambda函数来查找特定的元素

代码分析

上面的代码不是完整的代码,其中省略了定义浏览器驱动等语句。在上面中lambda定义一个简单的函数,来使用selenium的查找元素方法去找特定的元素,若是能找到这个元素的话返回True不然返回False。测试

数据分析

在数据分析中,常常会有对列表元素进行排序的需求, 可使用lambda函数来自定义排序的方法。请查看下面的例子: 下面例子中使用列表的排序方法并结合lambda函数来进行特殊的排序。请在ipython中输入下面语句:code

In [20]: numbers = [3, 2, 1, 4, 7, 0, -1, -4]
In [21]: numbers.sort(key=lambda x: abs(5-x))
In [22]: numbers
Out[22]: [4, 3, 7, 2, 1, 0, -1, -4]

上面代码中经过lambda函数实现了特殊条件的排序,先用5减列表中的每一个数字后,最后取绝对值后再来排序。排序

参考:ip

《利用Python进行数据分析》 Wes McKinney 著 http://stackoverflow.com/questions/890128/why-are-python-lambdas-usefulz

相关文章
相关标签/搜索