Python Lambda 闭包

news/2024/11/29 4:04:17/

文章目录

    • 在 Python 中使用 Lambda 函数的语法
    • 在 Python 中使用 Lambda 函数
    • 在 Python 中使用闭包函数


lambda 函数是在没有名称的情况下定义的。 它在 Python 中也被称为匿名函数。

我们使用 def 关键字在 Python 中定义常规函数,而 lambda 关键字用于定义 lambda 函数。

本篇文章将介绍在 Python 中使用 lambda 函数和闭包。


在 Python 中使用 Lambda 函数的语法

Python 中 lambda 函数的语法是:

lambda arguments : expression

一个 lambda 函数只能有多个参数,但只能有一个表达式。 它计算表达式并返回结果。


在 Python 中使用 Lambda 函数

以下示例将给定值加 5 并打印结果。

total = lambda a: a+5
print(total(10))

输出:

15

添加多个参数并返回结果。

total = lambda a,b,c: a+b+c
print(total(10,15,20))

输出:

45

在上面的例子中,lambda a,b,c: a+b+c 是一个 lambda 函数,其中 a,b,c 是参数,a+b+c 是一个表达式。 计算表达式并显示在输出中。

lambda 函数没有名称,并分配给变量 total。

这一行:

total = lambda a,b,c: a+b+c

它等同于:

def total(a,b,c):return a+b+c

在 Python 中使用闭包函数

在学习闭包之前,你必须先了解Python的嵌套函数和非局部变量的概念。

嵌套函数在另一个函数内部定义,并且可以访问封闭范围的变量。

此类非局部变量只能在其作用域内访问,而不能在 Python 的作用域外访问。

以下示例显示了访问非局部变量的嵌套函数。

def outerFunc(txt): # outer enclosing functiondef innerFunc():  # nested functionprint(txt)innerFunc()outerFunc("Hello World")

输出:

Hello World

如您所见,嵌套函数 innerFunc 访问了封闭函数 outerFunc 的非局部变量 txt。

闭包是一个函数对象,它可以记住封闭范围内的值,即使它们超出范围。

def outerFunc(txt): # outer enclosing functiondef innerFunc():  # nested functionprint(txt)return innerFuncmyFunc = outerFunc("Hello World")
myFunc()

输出:

Hello World

在此示例中,嵌套函数返回 innerfunc() 函数而不是调用它。 outerFunc() 函数使用文本 Hello World 调用并分配给变量 myFunc。

并且在调用 myFunc() 时,该值在作用域外被记住。

如果删除原始函数,封闭范围内的值仍将被记住。

del outerFunc
myFunc()

输出:

Hello World

下面是在Python中使用lambda函数和闭包的简单演示。

def sum(x):def total():calc = lambda x: x+5print(calc(x))return total
myFunc = sum(5)
myFunc()

输出:

10

现在你应该知道如何在 Python 中使用 lambda 函数和闭包了。 我们希望您觉得本篇文章对您有所帮助。


http://www.ppmy.cn/news/516524.html

相关文章

如何防止c++爆内存

在C中,内存管理是非常重要的,合理的内存管理可以有效地避免内存泄漏和内存爆炸的问题。以下是几种防止C爆内存的方法: 避免内存泄漏:在C中,手动分配内存后,需要手动释放它。如果没有及时释放内存&#xff0…

苹果手机处理器_台积电10月营收将创新高 全靠苹果A14处理器_手机

据外媒报道,台积电即将发布最新财报,其中10月份的业绩即将创下新高,主要是因为在苹果iPhone 12家族所需的A14处理器的推动下,其10月份的收入预计将超过9月份。 台积电10月营收将创新高 全靠苹果A14处理器 在 9 月份,台…

手机html送礼,送给家中“老顽童”的好礼物!这些手机的远程功能你会用嘛?...

六一儿童节马上就要到了,想当年我们也是享受六一儿童节半天假日的那个无忧无虑的儿童。如今,我们长大了,而我们家中的长辈,却越来越活的像一个“老顽童”,如今智能手机已经让移动互联网来到每个人身边,家中…

MySQL实战解析底层---为什么表数据删掉一半,表文件大小不变

目录 前言 参数innodb_file_per_table 数据删除流程 重建表 Online 和 inplace 前言 数据库占用空间太大,我把一个最大的表删掉了一半的数据,怎么表文件的大小还是没变?这与数据库表的空间回收有关这里还是针对MySQL中应用最广泛的InnoD…

使用Postman模拟文件上传和下载

介绍 Postman是一款强大的HTTP请求模拟工具,它可以帮我们在没有前端界面的情况下模拟发送HTTP请求,非常适合API开发和测试。在本篇文章中,我将向你展示如何使用Postman进行文件的上传和下载。 文件上传 启动Postman,点击“新建请…

出现线程死锁缺陷一般有那些原因?该怎么解决?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言什么是线程死锁线程…

解决win10自带播放器 HEVC视频扩展 需付费方法

问题现象如图: 解决办法: 第一步: 复制 ms-windows-store://pdp/?ProductId9n4wgh0z6vhq 第二步:浏览器打开,点击打开 第三步:会自动跳到微软商店,请耐心等待几分钟,然后点击安…

通道高清视频编码电路GM7123C高分辨率彩色图像;数字射 频调制;图像处理;仪器和视频信号

GM7123C 是一款频率 330MHz 的 3 通道 10 位高速视频 DAC 芯片,兼容 RS-343A/RS-170 标准差分输出,输出电流范围是 2mA~26mA。输入兼容 TTL 电平,内部 基准 1.23V,单电源 3.3V 供电,采用 LQFP48 封装。 应…