Python lambda默认参数

Python lambda默认参数教程

Pythonlambda 表达式参数 也是支持 默认值 的,就类似与 函数 的默认参数一样。

Python lambda默认参数详解

语法

lambda [parameter_list, param=val] : expression

参数

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

说明

定义的 lambda 表达式的参数的默认值为 val。

Python lambda循环定义详解

语法

funcs = [lambda x, n=n: x+n for n in range(val)]

说明

使用 lambda 表达式定义了一个循环。

案例

lambda 表达式参数默认值

使用 lambda 表达式参数默认值

print("嗨客网(www.haicoder.net)") sum = lambda x, y=100: x + y print("lambda res =", sum(512, 512)) print("lambda res =", sum(512))

程序运行后,控制台输出如下:

56_python lambda表达式参数默认值.png

我们定义了一个 lambda 表达式,该 lambda 表达式传入两个参数,返回这两个参数的和,同时,我们将该 lambda 表达式赋值给了变量 sum。

该 lambda 表达式的第二个参数 y 有一个默认值 100,即如果我们不传入参数 y,那么参数 y 的值就为 100。

接着,我们直接可以通过 sum 来调用我们定义的 lambda 表达式,第一次调用时,我们传入了两个 512,最后,返回了这两个数的和,第二次调用时,我们只传入了一个参数,第二个参数使用默认的 100。

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))

程序运行后,控制台输出如下:

57_python lambda表达式参数默认值.png

因为 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))

程序运行后,控制台输出如下:

58_python lambda表达式参数默认值.png

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

lambda表达式循环

在 lambda 表达式里使用循环

print("嗨客网(www.haicoder.net)") funcs = [lambda x: x+n for n in range(3)] for f in funcs: print("Val =", f(0))

程序运行后,控制台输出如下:

59_python lambda表达式参数默认值.png

我们在 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))

程序运行后,控制台输出如下:

60_python lambda表达式参数默认值.png

我们将参数 n 的值设置为默认参数,再次运行我们的程序发现,此时输出了 0 到 3 的值。

Python lambda默认参数总结

Python 的 lambda 表达式的参数也是支持默认值的,就类似与函数的默认参数一样。