Lambda 表达式
匿名函数的定义
在 Python 里有两类函数:
- 第一类:用
def
关键词定义的正规函数 - 第二类:用
lambda
关键词定义的匿名函数
Python 使用 lambda
关键词来创建匿名函数,而非def
关键词,它没有函数名,其语法结构如下:
lambda argument_list: expression
-
lambda
- 定义匿名函数的关键词。 -
argument_list
- 函数参数,它们可以是位置参数、默认参数、关键字参数,和正规函数里的参数类型一样。 -
:
- 冒号,在函数参数和表达式中间要加个冒号。 -
expression
- 只是一个表达式,输入函数参数,输出一些值。
注意:
-
expression
中没有 return 语句,因为 lambda 不需要它来返回,表达式本身结果就是返回值。 - 匿名函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
【例子】
def sqr(x):
return x ** 2
print(sqr)
# <function sqr at 0x000000BABD3A4400>
y = [sqr(x) for x in range(10)]
print(y)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
lbd_sqr = lambda x: x ** 2
print(lbd_sqr)
# <function <lambda> at 0x000000BABB6AC1E0>
y = [lbd_sqr(x) for x in range(10)]
print(y)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
sumary = lambda arg1, arg2: arg1 + arg2
print(sumary(10, 20)) # 30
func = lambda *args: sum(args)
print(func(1, 2, 3, 4, 5)) # 15
这段代码展示了使用lambda
表达式(匿名函数)的几个示例。以下逐行解析代码:
def sqr(x):
return x ** 2
print(sqr)
# <function sqr at 0x000000BABD3A4400>
定义了一个名为sqr
的函数,用于计算一个数的平方。打印sqr
函数会输出函数的描述信息。
y = [sqr(x) for x in range(10)]
print(y)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
使用sqr
函数和列表推导式生成一个包含0到9的数的平方的列表。
lbd_sqr = lambda x: x ** 2
print(lbd_sqr)
# <function <lambda> at 0x000000BABB6AC1E0>
使用lambda
表达式创建了一个匿名函数,并将其赋值给变量lbd_sqr
。打印lbd_sqr
会输出函数的描述信息。
y = [lbd_sqr(x) for x in range(10)]
print(y)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
使用lbd_sqr
的匿名函数和列表推导式生成一个包含0到9的数的平方的列表。
sumary = lambda arg1, arg2: arg1 + arg2
print(sumary(10, 20)) # 30
创建了一个接收两个参数并返回它们之和的匿名函数sumary
。调用sumary(10, 20)
将返回结果30
。
func = lambda *args: sum(args)
print(func(1, 2, 3, 4, 5)) # 15
创建了一个接收可变数量参数并返回它们的和的匿名函数func
。调用func(1, 2, 3, 4, 5)
将返回结果15
。
lambda
表达式是一种简洁的函数定义方式,在某些情况下可以替代常规的函数定义。它通常用于创建简单的、一次性的函数。在这些示例中,lambda
表达式被用于定义平方函数和求和函数,并且通过列表推导式可以方便地应用到一系列输入上。