我的编程空间,编程开发者的网络收藏夹
学习永远不晚

什么时候使用Lambda函数?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

什么时候使用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 函数不能使你的代码变得更清晰时,这时你就要考虑使用常规的方式来定义函数。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

什么时候使用Lambda函数?

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

下载Word文档

猜你喜欢

什么时候使用Lambda函数?

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

什么时候应该使用 golang 函数?

何时使用 go 函数?需要将代码分解成较小的块。需要重复使用代码。需要将代码逻辑封装到一个可重用的模块中。何时使用 Go 函数Go 中的函数是一种封装代码并将代码块组织在一起的方法。函数有多个优点,包括:可重用性:函数可以重复使用,避免重
什么时候应该使用 golang 函数?
2024-04-25

什么时候适合使用 C++ 函数单元测试?

函数单元测试是一种自动化测试技术,用于隔离测试 c++++ 函数的预期行为。适用于以下场景:验证函数行为检查边界条件检测错误重构代码作为文档说明何时使用 C++ 函数单元测试函数单元测试是一种对 C++ 函数进行隔离测试的自动化测试技术。
什么时候适合使用 C++ 函数单元测试?
2024-04-24

C++ lambda函数怎么使用

本篇内容介绍了“C++ lambda函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lambda 表达式Lambda 表达式是现代
2023-07-05

Python lambda函数怎么使用

本篇内容介绍了“Python lambda函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、lambda函数的定义 &
2023-07-02

Python中怎么使用Lambda函数

这篇文章主要介绍了Python中怎么使用Lambda函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。引言Lambda 函数(也称为匿名函数)是函数式编程中的核心概念之一。支
2023-06-14

C++ 函数继承详解:什么时候不应使用继承?

在以下情况下不应使用 c++++ 函数继承:派生类需要不同实现时,应创建具有不同实现的新函数。派生类不需要函数时,应声明为一个空类或使用私有、未实现的基类成员函数来禁用函数继承。函数不需要继承时,应使用其他机制(例如模板)来实现代码重用。C
C++ 函数继承详解:什么时候不应使用继承?
2024-05-04

Python中的lambda函数有什么用

lambda函数是一种匿名函数,它可以在需要函数的地方使用,常用于简化代码和处理简单的函数操作。Lambda函数具有以下几个特点和用途:1. 简化代码:Lambda函数可以用于简化代码,特别是在需要编写一些简单的函数时,可以直接使用lamb
2023-08-17

lambda函数怎么用

这篇文章主要介绍lambda函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!lambda函数也叫匿名函数,就是没有函数名的函数。lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象。la
2023-06-02

C++中的Lambda函数怎么使用

这篇文章主要讲解了“C++中的Lambda函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的Lambda函数怎么使用”吧!一 函数语法我们平时调用函数的时候,都是需要被调用
2023-06-22

Python当中Lambda函数怎么使用

本文小编为大家详细介绍“Python当中Lambda函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python当中Lambda函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是Lamb
2023-07-06

python中lambda函数的作用是什么

lambda函数是一种匿名函数,它可以在不定义函数名称的情况下创建函数。lambda函数通常用于简单的、单行的函数定义,可以作为参数传递给其他函数或用于函数返回值。lambda函数的作用包括:1. 简化代码:lambda函数可以用于简化代码
2023-09-20

Python中lambda函数的用法是什么

在Python中,lambda函数是一种匿名函数,也称为lambda表达式。它只能包含一个表达式,并且返回该表达式的结果。lambda函数的语法格式如下:```lambda arguments: expression```其中,argume
2023-08-18

java中什么时候使用static

什么时候使用:当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static。用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用。不足之处:初始化加载,比较占内存,所以不经常用的方法,不建议加此关键字。如果你需
java中什么时候使用static
2017-08-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录