赞
赏
Python 的 lambda 表达式也叫匿名函数,lambda 表达式简化了 函数 定义的书写形式,使代码更为简洁,使函数的定义方式更为直观,更容易理解。
实际上,lambda 表达式的本质就是匿名的、单行函数体的函数,但 lambda 表达式中的 参数 是一个 自由变量,是在运行时绑定值,而不是定义时就绑定,这跟函数的默认值参数定义是不同的。
lambda [parameter_list] : expression
参数 | 描述 |
---|---|
lambda | 定义 lambda 表达式所使用的关键字,所有的 lambda 表达式前面都必须使用该关键字。 |
parameter_list | 参数列表。 |
expression | 返回值。 |
lambda 是定义 lambda 表达式使用的 关键字,parameter_list 是 lambda 表达式的参数列表,lambda 表达式可以没有参数,也可以有多个参,如果有多个参数,则需要用逗号隔开。
expression 是 lambda 表达式的 返回值。
使用 lambda 表达式求和
print("嗨客网(www.haicoder.net)")
sum = lambda x, y : x + y
print("lambda res =", sum(512, 512))
程序运行后,控制台输出如下:
我们定义了一个 lambda 表达式,该 lambda 表达式传入两个参数,返回这两个参数的和,同时,我们将该 lambda 表达式赋值给了变量 sum。
接着,我们直接可以通过 sum 来调用我们定义的 lambda 表达式,我们传入了两个 512,最后,返回了这两个数的和,即,我们使用 lambda 表达式实现了求和的功能。
lambda 表达式参数是运行时绑定的
print("嗨客网(www.haicoder.net)")
x = 10
add = lambda y : x + y
x = 20
# lambda 表达式参数是运行时绑定的
print("lambda add =", add(20))
print("lambda add =", add(30))
程序运行后,控制台输出如下:
我们首先定义了一个变量 x,并赋值为 10,接着,我们定义了一个 lambda 表达式,该 lambda 表达式传入一个参数,返回这个参数与 x 的和,同时,我们将该 lambda 表达式赋值给了变量 add。
接着,我们再次给 x 赋值为 20 之后,我们通过 sum 来调用我们定义的 lambda 表达式,我们分别传入了 20 和 30,最后,我们发现程序返回了 40 和 50,而不是 30 和 40。
这是因为,lambda 表达式的参数是运行时动态绑定的,因此,我们运行程序时,其实 x 的值已经被修改为了 20,因此 lambda 表达式使用的是 20 而不是 10。
Python 的 lambda 表达式也叫匿名函数,lambda 表达式简化了函数定义的书写形式,使代码更为简洁,使函数的定义方式更为直观,更容易理解。
实际上,lambda 表达式的本质就是匿名的、单行函数体的函数,但 lambda 表达式中的参数是一个自由变量,是在运行时绑定值,而不是定义时就绑定,这跟函数的默认值参数定义是不同的。Python lambda 表达式定义:
lambda [parameter_list] : expression