一、前言
lambda 函数在 Python 编程语言中使用频率非常高,使用起来非常灵活、巧妙;
那么,什么是lambda
?它有哪些用法和应用场景呢 ?
下面让我一起来解读lambda
的神秘之处 !
好文章 记得收藏+点赞+关注额 !!!---- Nick.Peng
二、lambda 语法
- lambda 函数的语法只包含一个语句,表现形式如下:
lambda [arg1 [,arg2,.....argn]]:expression
- 其中,lambda 是 Python 预留的关键字,[arg…] 和 expression 由用户自定义。
- 具体介绍如下:
[arg…] 是参数列表,它的结构与 Python 中函数(function)的参数列表是一样的。
[arg…] 可以有非常多的形式。例如:
expression 是一个参数表达式,表达式中出现的参数需要在a, b a=1, b=2 *args **kwargs a, b=1, *args 空 ......
[arg......]
中有定义,并且表达式只能是单行的,只能有一个表达式。
以下都是合法的表达式:1 None a + b sum(a) 1 if a >10 else 0 ......
三、lambda 特性
- lambda 函数是匿名的:
所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。 - lambda 函数有输入和输出:
输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。 - lambda 函数拥有自己的命名空间:
不能访问自己参数列表之外或全局命名空间里的参数,只能完成非常简单的功能。
常见的lambda函数示例:lambda x, y: x*y # 函数输入是x和y,输出是它们的积x*y lambda:None # 函数没有输入参数,输出是None lambda *args: sum(args) # 输入是任意个数参数,输出是它们的和(隐性要求输入参数必须能进行算术运算) lambda **kwargs: 1 # 输入是任意键值对参数,输出是1
四、lambda 常见用法
由于lambda语法是固定的,其本质上只有一种用法,那就是定义一个lambda函数。
在实际中,根据这个lambda函数应用场景的不同,可以将lambda函数的用法扩展为以下几种:
-
1、将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。
示例:
add = lambda x, y: x+y
相当于定义了加法函数lambda x, y: x+y
,并将其赋值给变量add
,这样变量add
就指向了具有加法功能的函数。
这时我们如果执行add(1, 2)
,其输出结果就为3
。 -
2、将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。
示例:# 为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用: time.sleep=lambda x: None # 这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。 # 例如: time.sleep(3) # 程序不会休眠 3 秒钟,而是因为lambda输出为None,所以这里结果是什么都不做
-
3、将lambda函数作为参数传递给其他函数。
典型的用法就是下面我们常见的几种高阶函数。
五、lambda 用法之高阶函数
-
map() 函数:
描述:
map() 会根据提供的函数对指定序列做映射
。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
语法:
map(function, iterable, ...)
参数:
function ----> 函数
iterable ----> 一个或多个序列
返回值:
Python 2.x 版本返回的是列表
Python 3.x 版本返回的是迭代器
示例:# ===========一般写法:=========== # 1、计算平方数 def square(x): return x ** 2 map(square, [1,2