匿名函数,顾名思义,就是指一个没有名称的函数。
在 Python 中,常规函数使用 def 关键字定义,但匿名函数使用 lambda 关键字定义。
正因如此,匿名函数也被称为 lambda 函数。
1
语法规则
相比常规函数,lambda 函数的语法会简单很多:
lambda argument(s): expression
- lambda:定义 lambda 函数的关键字。
- argument(s):函数的参数列表,参数之间用逗号(,)分割。
- expression:被返回的表达式,且表达式只能有一个。
根据语法可知,由于 lambda 函数只能包含表达式,不能包含语句,因此 lambda 函数不能使用 return,因为 return 是一个语句。
注意:lamda 函数应尽量简短,不要试图加入太多东西,
如果逻辑比较复杂,应定义一个常规的函数。
2
基本用法
以一个数字的平方为例,先来看常规函数是如何定义的:
>>> def square(x):
... return x * x
...
>>>
>>> square(6)
36
若换作 lambda 函数的话,就是下面这样:
>>> square = lambda x: x * x
>>>
>>> square
<function <lambda> at 0x7f9171608950>
>>>
>>> square(6)
36
可以看到,这个函数没有名字,它返回了一个函数对象,该对象被分配给了变量 square,可以将其作为一个正常的函数来调用。
当然,也可以直接调用 lambda 函数,而无需将其分配给变量:
>>> (lambda x: x * x)(6)
36
但这样的可读性不是很好。
3
主要作用
lambda 函数有个优点,就是函数没有名字,所以不必担心函数名冲突。
此外,当需要一些小体量的一次性函数时,可以使用 lambda 函数。
通常,它也被用作高阶函数(将其他函数作为参数的函数)的参数。
例如,在一个函数内部使用 lambda 函数:
>>> def pow(y):
... return lambda x : x ** y
...
>>>
这个函数可用于求 x 的 y 次幂,来演示下如何使用:
>>> square = pow(2) # 求平方
>>> cube = pow(3) # 求立方
>>>
>>> square(6)
36
>>> cube(6)
216
这样以来,便可以用 pow() 函数定义多个 lambda 函数了,非常方便!
·END·
高效程序员
谈天 · 说地 · 侃代码 · 开车