【python】lambda

苏格拉底的落泪 / 2023-06-08 / 原文

lambda

lambda是匿名函数,也就是没有名字的函数。lambda的语法非常简单:

下面是一个lambda表达式的简单例子,我们可以把lambda表达式赋值给一个变量,然后通过这个变量来使用它:

>>> my_sum = lambda x, y: x+y
>>> my_sum(1, 2)
3

lambda默认参数详解

语法:

lambda [parameter_list, param=val] : expression

参数:

参数 描述
lambda 定义 lambda 表达式所使用的关键字,所有的 lambda 表达式前面都必须使用该关键字。
parameter_list 参数列表。
param 形式参数。
val 形式参数 param 的默认值。
expression 返回值。

1. 例子

sum = lambda x, y=100: x + y
print("lambda res =", sum(512, 512))
print("lambda res =", sum(512))

输出:

lambda res = 1024
lambda res = 612

 

lambda表达式参数运行时绑定

因为 lambda 表达式的参数是运行时动态绑定的,因此,我们运行程序时,x 的值为 20,因此我们程序最终输出的结果为 40 和 50,现在我们将程序修改为以下代码:

x = 10
add = lambda y : x + y
x = 20
# lambda 表达式参数是运行时绑定的
print("lambda add =", add(20))
print("lambda add =", add(30))

输出:

lambda add = 40
lambda add = 50

 

x = 10
add = lambda y, x=x : x + y
x = 20
# lambda 表达式参数是运行时绑定的
print("lambda add =", add(20))
print("lambda add =", add(30))

输出:

lambda add = 30
lambda add = 40

我们将参数 x 的值设置为默认参数,再次运行我们的程序发现,此时使用的 x 不再是动态绑定的 20 了,而是使用的 10,因此使用 lambda 表达式的默认参数可以解决参数的运行时绑定问题。

参考资料

1. Python中的lambda、map、filter、reduce、zip用法介绍

2. Python lambda默认参数

3. lambda表达式与for循环的搭配用法