当前位置: 首页 > 图灵资讯 > 行业资讯> Python lambda表达式及用法

Python lambda表达式及用法

发布时间:2025-11-02 16:19:58

lambda 表达式是现代编程语言引入的一种语法。如果函数是命名的、易于重复使用的代码块,则 lambda 表达式是一个功能更灵活的代码块,可以在程序中传输和调用。

回顾局部函数

get_math_func() 函数将返回三个局部函数之一。函数代码如下:

defget_math_func(type):
#定义三个局部函数
...
#返回局部函数
iftype=="square":
returnsquare
iftype=="cube":
returncube
else:
returnfactorial

由于默认情况下局部函数的作用域只停留在其封闭函数中,这三个局部函数的函数名的作用过于有限,即仅在程序中 if 作为返回值使用的句子。一旦离开 get_math_func() 函数体,这三个局部函数的函数名失去了意义。由于局部函数的函数名意义不大,考虑使用 lambda 表达式简化了局部函数的编写。

使用 lambda 替代局部函数的表达式

如果使用 lambda 简化表达式 get_math_func() 函数可以将程序改写成以下形式:

defget_math_func(type):
result=1
#这个函数返回Lambda表达式。
iftype=='square':
returnlambdan:n*n#①
eliftype=='cube':
returnlambdan:n*n*n#②
else:
returnlambdan:(1+n)*n/2#③
#调用get_调用get_math_func(),程序返回嵌套函数
math_func=get_math_func("cube")
print(math_func(5)#输出125
math_func=get_math_func("square")
print(math_func(5)#输出25
math_func=get_math_func("other")
print(math_func(5)#输出15.0

在上述代码中,return 使用后部 lambda 定义关键词是 lambda Python要求表达式 lambda 表达只能是单行表达。

注:由于lambda表达式只能是单行表达式,因此不允许使用更复杂的函数形式③将编号代码处改为计算1+2+3+..+n的总和。

lambda 表达式语法格式如下:

lambda[parameter_list]:表达式

从上述语法格式可以看出 lambda 表达式的几个要点:

lambda 必须使用表达式 lambda 定义关键字。

在 lambda 在关键字之后,参数列表位于冒号的左侧。可以没有参数,也可以有多个参数。如果有多个参数,则需要用逗号将其分开。冒号的右侧是 lambda 表达式返回值。

实际上,lambda 表达式的本质是匿名和单行函数体的函数。因此,lambda 表达式可以写成函数的形式。例如,对于以下内容 lambda 表达式:

lambdax,y:x+y

可以改写为以下函数形式:

defadd(x,y):returnx+y在定义函数时使用简化语法:当函数体只有一行代码时,可以直接将函数体的代码放在与函数头相同的行中。

一般来说,函数比 lambda 表达式的适应性更强,lambda 表达式只能创建一个简单的函数对象(只适用于单行函数体)。但是 lambda 表达式仍有以下两个用途:

使用单行函数 lambda 表达式可以节省定义函数的过程,使代码更加简洁。

对于不需要多次重复使用的函数,使用 lambda 使用后可立即释放表达式,提高性能。

通过了下面的代码示范 lambda 调用表达式 Python 内置的 map() 函数:

#lambda表达式作为输入计算平方的参数
x=map(lambdax:x*x,range(8))
print([eforeinx])#[0,1,4,9,16,25,36,49]
#lambda表达式作为输入计算平方的参数
y=map(lambdax:x*xifx%2==0else0,range(8))
print([eforeiny])#[0,0,4,0,16,0,36,0]

正如上述代码所看到的,内置的 map() 函数的第一个参数需要传入函数,这里传入函数的简化形式:lambda 表达式,使程序更简洁,性能更好。

相关文章

Python lambda表达式及用法

Python lambda表达式及用法

2025-11-02
Python中的threading模块是什么

Python中的threading模块是什么

2025-11-02
Python中Thread子类如何封装

Python中Thread子类如何封装

2025-10-31
Python中的并行和并发是什么

Python中的并行和并发是什么

2025-10-31
Python绘图时如何显示中文

Python绘图时如何显示中文

2025-10-31
Python中的匿名函数是什么

Python中的匿名函数是什么

2025-10-31