分类
编码

Python def 和 lambda 语法和差异比较

我们来看看两个功能相似的关键字。你不会把两个没用的吗?

定义说明

我先给你举个例子。

def add(x, y):
    return x + y
print(add(3,5))

结果如下:

8

函数是用 def 关键字编写的。

add 是函数的名称,要传递的参数定义为 x 和 y。

它有一个返回两个值相加结果的函数。

如果将 3 和 5 作为参数传递给以这种方式创建的 add 函数,则可以看到结果为 8。

拉姆达描述

让我们创建与上面相同的函数。

add = lambda x,y: x+y
print(add(2,3))

结果如下:

5

它使用关键字 lambda 接收 x 和 y 作为参数,并返回两个值相加的结果。

默认情况下,Lambda 会创建未命名的函数。

你可以在一行中写得更简洁。

另外,不要使用 return 关键字。

它也可以通过将其分配给变量以与函数相同的方式使用。

如何使用它

让我们看另一个使用示例来帮助您理解。

temp = [1,2,3,4,5]
result = list(filter(lambda x:x>2, temp))
print(result)

结果如下:

[3,4,5]

这是一个使用过滤器方法从元素为 1 到 5 的数组中仅选择大于 2 的值的示例。

lambda 接收一个值,确定它是否大于 2,并返回 True 或 False 布尔值。

filter 方法将一个 lambda 分配给第一个参数,将一个数组分配给第二个参数。

它遍历数组并产生一个结果,如果它大于 2 则保留该值,否则将其排除。

filter得到的结果用list方法以数组的形式创建并存储在result变量中。

让我们用一个函数创建完全相同的函数。

temp = [1,2,3,4,5]
def comp(x):
    return x > 2
result = list(filter(comp, temp))
print(result)

结果如下:

[3,4,5]

你如何实现它并不重要,但在这个例子中,lambda 更简洁,对吧?

事实上,如果你看一下类型,def 和 lambda 实现都与函数相同。

因此,您可以将其视为 lambda 包含在函数中的概念。

总之,最好使用 def 关键字来创建一个需要重用的函数,而当你想创建一个简单的一次性函数时,使用 lambda 会更好。

此帖子有 2 条回复。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

zh_CN简体中文