Python 匿名函数


匿名函数,顾名思义,就是指一个没有名称的函数。

在 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·
 

高效程序员

谈天 · 说地 · 侃代码 · 开车

长按识别二维码,解锁更多精彩内容

©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值