iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >什么时候使用Lambda函数?
  • 931
分享到

什么时候使用Lambda函数?

2023-06-02 08:06:34 931人浏览 安东尼
摘要

原文来自:1前言python 中定义函数有两种方法,一种是用常规方式 def 定义,函数要指定名字,第二种是用 lambda 定义,不需要指定名字,称为 Lambda 函数。Lambda 函数又称匿名函数,匿名函数就是没有名字的函数,函数没

原文来自:1

前言

python 中定义函数有两种方法,一种是用常规方式 def 定义,函数要指定名字,第二种是用 lambda 定义,不需要指定名字,称为 Lambda 函数。

Lambda 函数又称匿名函数,匿名函数就是没有名字的函数,函数没有名字也行?当然可以啦。有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要非给它取个名字不可。

好比电影里面的群众演员,往往他们的戏份很少,最多是衬托主演,跑跑龙套,他们需要名字吗?不需要,因为他们仅仅只是临时出镜,下次可能就用不着了,所以犯不着费心思给他们每个人编个号取个名字,毕竟取个优雅的名字是很费劲的事情。

先来看个简单 lambda 函数

>>> lambda x, y : x+y<function <lambda> at 0x102bc1c80>

x 和 y 是函数的两个参数,冒号后面的表达式是函数的返回值,你能一眼看出这个函数就是是在求两个变量的和,但作为一个函数,没有名字如何使用呢?这里我们暂且给这个匿名函数绑定一个名字,这样使得我们调用匿名函数成为可能

>>> add = lambda x, y : x+y>>> add<function <lambda> at 0x102bc2140>>>> add(1,2)3

它等同于常规函数

>>> def add2(x, y):...     return x+y...>>> add2<function add2 at 0x102bc1c80>>>> add2(1,2)3

如果定义匿名函数,还要给它绑定一个名字的话,有点画蛇添足,通常是直接使用 lambda 函数。那么 lamdba 函数的正确使用场景在哪呢?

看个资料! 有大量Python 资料

函数式编程

尽管 Python 算不上是一门纯函数式编程语言,但它本身提供了很多函数式编程的特性,像 map、reduce、filter、sorted 这些函数都支持函数作为参数,lambda 函数就可以应用在函数式编程中。

请看题:一个整数列表,要求按照列表中元素的绝对值大小升序排列,你会怎么做?思考一分钟往下看

>>> list1 = [3,5,-4,-1,0,-2,-6]>>> sorted(list1, key=lambda x: abs(x))[0, -1, -2, 3, -4, 5, -6]

排序函数 sorted 支持接收一个函数作为参数,该参数作为 sorted 的排序依据,这里按照列表元素的绝对值进行排序,当然,我也可以用普通函数来实现:

>>> def foo(x):...     return abs(x)...>>> sorted(list1, key=foo)[0, -1, -2, 3, -4, 5, -6]

只不过是这种方式代码看起来不够 Pythonic 而已。

闭包

闭包本身是一个晦涩难懂的概念,它可以专门单独用一篇文章来介绍,不过在这里我们可以简单粗暴地理解为闭包就是一个定义在函数内部的函数,闭包使得变量即使脱离了该函数的作用域范围也依然能被访问到。

来看一个用 lambda 函数作为闭包的例子。

>>> def my_add(n):...     return lambda x:x+n...>>> add_3 = my_add(3)>>> add_3(7)10

这里的 lambda 函数就是一个闭包,在全局作用域范围中,add_3(7) 可以正常执行且返回值为10,之所以返回10是因为在 my_add 局部作用域中,变量 n 的值在闭包的作用使得它在全局作用域也可以被访问到。

换成常规函数也可以实现闭包,只不过是这种方式稍显啰嗦。

>>> def my_add(n):...     def wrapper(x):...         return x+n...     return wrapper...>>> add_5 = my_add(5)>>> add_5(2)7

那么是不是任何情况 lambda 函数都要比常规函数更清晰明了呢?看这个例子:

f = lambda x: [[y for j, y in enumerate(set(x)) if (i >> j) & 1] for i in range(2**len(set(x)))]

这是一个返回某个集合的所有子集的 lambda 函数,你看明白了吗?我是很难一眼看出来

zen of python 中有这样一句话是 Explicit is better than implicit(明了胜于晦涩)。记住,如果用 lambda 函数不能使你的代码变得更清晰时,这时你就要考虑使用常规的方式来定义函数。

--结束END--

本文标题: 什么时候使用Lambda函数?

本文链接: https://www.lsjlt.com/news/229506.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 什么时候使用Lambda函数?
    原文来自:1前言Python 中定义函数有两种方法,一种是用常规方式 def 定义,函数要指定名字,第二种是用 lambda 定义,不需要指定名字,称为 Lambda 函数。Lambda 函数又称匿名函数,匿名函数就是没有名字的函数,函数没...
    99+
    2023-06-02
  • 什么时候应该使用 golang 函数?
    何时使用 go 函数?需要将代码分解成较小的块。需要重复使用代码。需要将代码逻辑封装到一个可重用的模块中。 何时使用 Go 函数 Go 中的函数是一种封装代码并将代码块组织在一起的方法...
    99+
    2024-04-25
    函数 golang
  • js中什么时候不能使用箭头函数
    目录箭头函数箭头函数有什么缺点?什么时候不能使用箭头函数?1. 对象方法中,不适用箭头函数为什么对象方法中,箭头函数的this指向不是这个对象?2. 原型方法中,不适用箭头函数3. ...
    99+
    2024-04-02
  • 什么时候适合使用 C++ 函数单元测试?
    函数单元测试是一种自动化测试技术,用于隔离测试 c++++ 函数的预期行为。适用于以下场景:验证函数行为检查边界条件检测错误重构代码作为文档说明 何时使用 C++ 函数单元测试 函数单...
    99+
    2024-04-24
    c++ 单元测试 重构代码
  • 什么时候使用flags
    这篇文章主要讲解了“什么时候使用flags”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么时候使用flags”吧!   Possible flags:(...
    99+
    2024-04-02
  • es6箭头函数什么时候不能用
    这篇文章主要讲解了“es6箭头函数什么时候不能用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“es6箭头函数什么时候不能用”吧! ...
    99+
    2024-04-02
  • HTML div什么时候使用
    本篇内容主要讲解“HTML div什么时候使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML div什么时候使用”吧! 1、div:作为布局以及样式化...
    99+
    2024-04-02
  • C++ 函数继承详解:什么时候不应使用继承?
    在以下情况下不应使用 c++++ 函数继承:派生类需要不同实现时,应创建具有不同实现的新函数。派生类不需要函数时,应声明为一个空类或使用私有、未实现的基类成员函数来禁用函数继承。函数不需...
    99+
    2024-05-04
    c++ 继承
  • C++ lambda函数怎么使用
    本篇内容介绍了“C++ lambda函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lambda 表达式Lambda 表...
    99+
    2023-07-05
  • c++中endl什么时候使用
    std::endl 用于将换行符写入流,通常在需要显式结束行时使用。它强制刷新流并避免缓冲行为。替代方法包括直接写入 '\n' 字符或使用 std::flush 手动刷新流。 什么时候...
    99+
    2024-04-28
    c++
  • Python lambda函数怎么使用
    本篇内容介绍了“Python lambda函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、lambda函数的定义&a...
    99+
    2023-07-02
  • JavaScript 什么时候使用回调
    JavaScript 什么时候使用回调,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 JavaScript 何时使用回调? ...
    99+
    2024-04-02
  • Python中怎么使用Lambda函数
    这篇文章主要介绍了Python中怎么使用Lambda函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。引言Lambda 函数(也称为匿名函数)是函数式编程中的核心概念之一。支...
    99+
    2023-06-14
  • 在什么时候适合使用Map
    本篇内容介绍了“在什么时候适合使用Map”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!「Map」映射是一种...
    99+
    2024-04-02
  • lambda函数怎么用
    这篇文章主要介绍lambda函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!lambda函数也叫匿名函数,就是没有函数名的函数。lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象。la...
    99+
    2023-06-02
  • python中Lambda函数是什么
    这篇文章主要为大家展示了“python中Lambda函数是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中Lambda函数是什么”这篇文章吧。L...
    99+
    2024-04-02
  • Python中的lambda函数有什么用
    lambda函数是一种匿名函数,它可以在需要函数的地方使用,常用于简化代码和处理简单的函数操作。Lambda函数具有以下几个特点和用...
    99+
    2023-08-17
    Python lambda
  • Python当中Lambda函数怎么使用
    本文小编为大家详细介绍“Python当中Lambda函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python当中Lambda函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是Lamb...
    99+
    2023-07-06
  • Java消息队列什么时候使用
    本篇内容主要讲解“Java消息队列什么时候使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java消息队列什么时候使用”吧!何时需要消息队列当你需要使用消息队列时,首先需要考虑它的必要性。可以...
    99+
    2023-06-04
  • C++中的Lambda函数怎么使用
    这篇文章主要讲解了“C++中的Lambda函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的Lambda函数怎么使用”吧!一 函数语法我们平时调用函数的时候,都是需要被调用...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作