Python 中的匿名函数是什么?

Python 中的匿名函数是什么?

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

更多Python相关文章,请阅读:Python 教程

语法

以下是 lambda 函数的语法-

lambda [args] : expression

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

示例:调用 lambda 函数

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

# 找出三角形的面积
triangle = lambda m,n : 1/2 * m * n
res=triangle(34,24)
print("三角形的面积:",res)

输出

以下是上述代码的输出-

三角形的面积: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 函数中只能有一个表达式。很明显,它无法替代其体包含循环、条件等的函数。

使用 Python 内置函数的 lambda 函数

使用 Python 的内置方法是进行带有 lambda 函数操作的简单有效方法。由于这些函数可以接受 lambda 作为参数并立即调用,因此是可能的。当需要一个无名称的函数进行短时间操作时,使用 lambda 函数。

通常,在 Python 中使用它作为高阶函数的参数(接受其他函数作为参数的函数)。与内置函数 filter()、map() 等一起使用 lambda 函数。

使用 filter() 函数

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

  • 指定过滤约束的函数

  • 任何迭代器序列,比如列表,元组等。

示例

在下面的示例中,演示了在filter()函数中使用匿名函数’lambda’。在第一行中,定义了一个名为‘series’的数字列表。由filter()函数产生的过滤值在一个名为’result’的变量中声明。使用一个lambda函数检查列表中的每个项,如果它大于29则返回true。然后,打印filter函数的结果 –

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的列表,其中包含许多项。我们声明’result’变量,它将保存映射值。一个lambda函数返回迭代评估列表中的每个数字的立方。然后打印map函数的结果。

# 在列表中打印数字的立方
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函数,它遍历每个列表项。然后它将为该数字的总和给出结果。

# 在从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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程