Python 匿名函数是什么

Python 匿名函数是什么

Python中的匿名函数在定义时没有名称。在Python中,使用 lambda 关键字定义匿名函数,而不是用于普通函数的def关键字。因此,lambda函数是匿名函数的另一个名称。

语法

lambda函数的语法如下:

lambda [args] : expression

虽然lambda函数只能有一个表达式,但它可以有任意数量的参数。lambda函数也可以立即调用,并且写在单行代码中。

示例:调用lambda函数

lambda函数以关键字lambda和参数’m’和’n’开始。在”:”后的方程式’½ * m * n’的值将被返回给调用者。为了将其作为具有名称的函数可调用,整个lambda函数lambda ‘m,n : 1/2 * m * n’被赋给变量’triangle’。如下所示,变量名被转换为函数名,以便它可以像其他函数一样被调用。

# Finding the area of a triangle
triangle = lambda m,n : 1/2 * m * n
res=triangle(34,24)
print("Area of the triangle: ",res)

输出

以下是上面代码的输出结果 –

Area of the triangle: 408.0

备用解决方案

以下是定义匿名函数的另一种方法 –

def triangle(m,n):
   return 1/2 * m * n
print(triangle(4,6))

输出

以下是上述代码的输出结果 –

12.0

注意 - 表达式不必总是返回一个值。如下例所示,lambda函数返回为空 –

company = lambda name: print('EdTech', name)
company('Tutorials Point')

注意: lambda函数中只能有一个表达式。显然,lambda函数无法替代其函数体中包含循环、条件判断等的函数。

使用Python内置函数的lambda函数

使用Python的内置方法是一种简单有效的通过lambda函数执行操作的方法。由于这些函数可以接受lambda作为参数并立即调用,所以这是可能的。当需要一个临时的无名函数时,我们使用lambda函数。

通常情况下,我们将其作为参数传递给Python中的高阶函数(接受其他函数作为参数的函数)。lambda函数与内置函数(如filter()、map()等)一起使用。

使用filter()函数

使用filter函数可以从元素列表中选择特定的元素。可以使用任何迭代器,如列表、集合、元组等作为序列。将选择的元素取决于预定义的约束条件。有两个参数:

  • 指定筛选约束条件的函数

  • 一系列任意迭代器,如列表、元组等

示例

下面的示例展示了在filter()函数中使用匿名函数lambda的用法。在第一行中定义了一个名为series的数字列表。这里使用一个lambda函数来检查列表中的每个项,如果大于29,则返回true。然后,打印过滤函数返回的结果 –

series = [23,45,57,39,1,3,95,3,8,85]
result = filter (lambda m: m > 29, series)
print('All the numbers greater than 29 in the series are :',list(result))

输出

以下是上面代码的输出-

All the numbers greater than 29 in the series are : [45, 57, 39, 95, 85]

在map()函数中的使用

在map()函数中,可以对系列中的每个元素执行特定的操作。与filter()函数类似,它需要两个参数,即指定要对元素执行的操作的函数和一个或多个序列。

示例

以下是一个示例,展示了匿名函数’lambda’在map()函数中的使用。在这里,我们定义了一个名为series的列表,其中包含了多个项。我们声明了’结果’变量,它将保存映射的值。使用lambda函数迭代地对列表中的每个数字进行立方运算。然后打印出map函数的结果。

# printing the cube of numbers given in the list
series = [23,5,1,7,45,9,38,65,3]
result = map (lambda m: m*m*m, series)
print('The cube of each element in the list are :',list(result))

输出

以下是上述代码的输出结果 –

The cube of each element in the list are : [12167, 125, 1, 343, 91125, 729, 54872, 274625, 27]

在reduce()函数中的用法

和map()函数一样,reduce函数用于对序列中的每个元素执行操作。但它的操作方式有所不同。在获得输出之前,reduce()函数执行以下步骤:

  • 对序列的前两个项目应用指定操作。

  • 存储这个结果。

  • 使用先前保存的结果和序列的下一个元素执行操作。

  • 继续,直到没有更多元素。

还有两个额外的参数:

  • 指定要执行的操作的方法。

  • 一系列任何迭代器,如列表、元组等。

注意: reduce()函数从名为functools的模块中导入。该模块提供了诸如reduce()、wraps()、cache()等高阶函数。

示例

在下面的示例中,展示了在reduce()函数中使用匿名函数‘lambda’的用法。从functools模块中导入reduce()函数。在这里,我们定义了一个名为‘series’的列表,其中包含了一些项。我们声明了一个变量‘sum’,它将保存缩减后的值。给定了一个lambda函数,它迭代每个列表项。然后它将给出那些数字的求和结果。

# printing the sum of numbers given in the list from functools
from functools import reduce 
series = [23,5,1,7,45,9,38,65,3]
sum = reduce (lambda m,n: m+n, series)
print('The total sum of all the elements in the list is :',sum)

输出

下面是上述代码的输出 –

The total sum of all the elements in the list is : 196

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程