ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python中的匿名函数

2022-04-17 12:00:18  阅读:197  来源: 互联网

标签:map return 函数 Python 普通 匿名 lambda


在Python中,有时候我们需要一个简单的函数去返回一些结果,但是我们又不想通过 def 专门去定义函数再引用,这种情况下有没有好的办法来完成呢?

答案是使用匿名函数,而Python中的匿名函数通过 lambda 表达式来完成。

匿名函数的使用

当我们使用匿名函数时, lambda 只是一个表达式,它并不是一个代码块,比如我们使用 map() 函数 和 lambda 来实现计算一个数的平方:

>>> list(map(lambda x: x * x, [1, 2, 3, 4]))
[1, 4, 9, 16]

在上面的 lambda 表达式中,我们并没有给其定义函数名,但其仍然能够正常执行。也就是说,我们在这里定义的是一个匿名函数:lambda x: x * x ,其中 lambda x是匿名函数的声明部分,而 x * x则是匿名函数的实现部分,且不需要写 return 语句。它其实等价于下面这个普通函数:

def demo1(x):
    return x * x

我们把这个匿名函数作为一个参数传递给 map() ,而 map() 中会把它看作一个和普通函数一样的函数,从而进一步进行处理。同理,我们还可以把匿名函数赋值给一个变量,然后通过变量来调用函数,请看下面的例子:

a, b = 10, 20
sum = lambda x, y: x + y
print(sum)
print(sum(a, b))

执行结果如下:

<function <lambda> at 0x000001F18AC9C268>
30

可以发现,上面的 sum 就是一个匿名函数,我们并没有写 return 语句,但依然能够返回结果。lambda x, y是匿名函数的声明部分,而 x + y则是匿名函数的实现部分。它其实等价于下面这个普通函数:

def demo2(x, y):
    return x + y

匿名函数和普通函数的区别

我们使用匿名函数时,一行代码就能够搞定了,那是不是所有的普通函数都应该替换成匿名函数呢?

答案肯定是不行的,尽管我们使用 lambda 表达式来定义简单的函数,但它的使用具有一定的局限性。匿名函数和普通函数之间,主要有以下几点区别:

  • 定义普通函数时,必须要有函数名标识,而匿名函数则不需要有函数名来标识;
  • 普通函数中的函数体实现部分,可以有多条语句,而匿名函数则只能是一个表达式;
  • 普通函数可以用于实现很复杂的功能逻辑处理,而匿名函数一般用于实现一些简单的功能;
  • 如果函数可能会被多次调用时,最好使用普通函数,在非多次调用的情况下才建议使用匿名函数。

标签:map,return,函数,Python,普通,匿名,lambda
来源: https://www.cnblogs.com/wintest/p/16155351.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有