赞
赏
Python 的 lambda 表达式 的 参数 也是支持 默认值 的,就类似与 函数 的默认参数一样。
lambda [parameter_list, param=val] : expression
参数 | 描述 |
---|---|
lambda | 定义 lambda 表达式所使用的关键字,所有的 lambda 表达式前面都必须使用该关键字。 |
parameter_list | 参数列表。 |
param | 形式参数。 |
val | 形式参数 param 的默认值。 |
expression | 返回值。 |
定义的 lambda 表达式的参数的默认值为 val。
funcs = [lambda x, n=n: x+n for n in range(val)]
使用 lambda 表达式定义了一个循环。
使用 lambda 表达式参数默认值
print("嗨客网(www.haicoder.net)")
sum = lambda x, y=100: x + y
print("lambda res =", sum(512, 512))
print("lambda res =", sum(512))
程序运行后,控制台输出如下:
我们定义了一个 lambda 表达式,该 lambda 表达式传入两个参数,返回这两个参数的和,同时,我们将该 lambda 表达式赋值给了变量 sum。
该 lambda 表达式的第二个参数 y 有一个默认值 100,即如果我们不传入参数 y,那么参数 y 的值就为 100。
接着,我们直接可以通过 sum 来调用我们定义的 lambda 表达式,第一次调用时,我们传入了两个 512,最后,返回了这两个数的和,第二次调用时,我们只传入了一个参数,第二个参数使用默认的 100。
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))
程序运行后,控制台输出如下:
因为 lambda 表达式的参数是运行时动态绑定的,因此,我们运行程序时,x 的值为 20,因此我们程序最终输出的结果为 40 和 50,现在我们将程序修改为以下代码:
print("嗨客网(www.haicoder.net)")
x = 10
add = lambda y, x=x : x + y
x = 20
# lambda 表达式参数是运行时绑定的
print("lambda add =", add(20))
print("lambda add =", add(30))
程序运行后,控制台输出如下:
我们将参数 x 的值设置为默认参数,再次运行我们的程序发现,此时使用的 x 不再是动态绑定的 20 了,而是使用的 10,因此使用 lambda 表达式的默认参数可以解决参数的运行时绑定问题。
在 lambda 表达式里使用循环
print("嗨客网(www.haicoder.net)")
funcs = [lambda x: x+n for n in range(3)]
for f in funcs:
print("Val =", f(0))
程序运行后,控制台输出如下:
我们在 lambda 表达式里面使用 for 循环 期望遍历 0 到 3 的值,结果,程序全部输出了 2,现在我们将程序修改为以下代码:
print("嗨客网(www.haicoder.net)")
funcs = [lambda x, n=n: x+n for n in range(3)]
for f in funcs:
print("Val =", f(0))
程序运行后,控制台输出如下:
我们将参数 n 的值设置为默认参数,再次运行我们的程序发现,此时输出了 0 到 3 的值。
Python 的 lambda 表达式的参数也是支持默认值的,就类似与函数的默认参数一样。