Python知识点:lambda 表达式

简介: lambda 表达可以被看做是一种匿名函数。它可以让你快速定义一个极度简单的单行函数。譬如这样一个实现三个数相加的函数:

入门教程、案例源码、学习资料、读者群

请访问: python666.cn

大家好,欢迎来到 Crossin的编程教室 !

Python 是一门简洁的语言,lambda 表达式则充分体现了 Python 这一特点。

lambda 表达可以被看做是一种匿名函数。它可以让你快速定义一个极度简单的单行函数。譬如这样一个实现三个数相加的函数:

def sum(a, b, c):
  return a + b + c
print(sum(1, 2, 3))
print(sum(4, 5, 6))

输出:

6
15

如果使用 lambda 表达式来实现:


sum = lambda a, b, c: a + b + c
print(sum(1, 2, 3))
print(sum(4, 5, 6))

输出:

6
15

两种方法的结果是相同的。

lambda 表达式的语法格式:

lambda 参数列表: 表达式

定义 lambda 表达式时,参数列表周围没有括号,返回值前没有 return 关键字,也没有函数名称。


它的写法比 def 更加简洁。但是,它的主体只能是一个表达式,不可以是代码块,不能是命令(比如 del)。所以 lambda 表达式在获得了简洁的同时失去了一定的功能,能表达的逻辑相对有限。

lambda 表达式创建了一个函数对象,可以把这个对象赋值给一个变量进行调用,就像上面的例子中一样。

来看一个复杂一点的例子,把 lambda 表达式用在 def 函数定义中:


def fn(x):
  return lambda y: x + y
a = fn(2)
print(a(3))

输出:

5

这里,fn 函数的返回值是一个 lambda 表达式,也就等于是一个函数对象。当以参数2来调用 fn 时,得到的结果就是:

lambda y: 2 + y

a = fn(2)


就相当于:

a = lambda y: 2 + y

所以 a(3) 的结果就是5。


lambda 表达式其实只是一种编码风格,这种写法更加 pythonic。这并不意味着你一定要使用它。事实上,任何可以使用 lambda 表达式的地方,都可以通过普通的 def 函数定义来替代。在一些需要重复使用同一函数的地方,def 可以避免重复定义函数。况且 def 函数更加通用,某些情况可以带来更好地代码可读性。

而对于像 filter、sort 这种需要内嵌函数的方法,lambda 表达式就会显得比较合适。这个下次再来单独介绍。

当然对于初学者来说,了解 lambda 表达式还有一个重要作用就是,看懂别人写的代码。

相关文章
|
1月前
|
缓存 Java 索引
[Python]知识点
本文主要介绍了Python的一些高级知识点和使用细节,包括pip的使用、内置函数、列表、元组、字典、集合、变量、Lambda表达式、面向对象编程、异常处理、模块及标准库等。文章适合有一定Python基础的读者,重点在于深入理解和掌握Python的高级特性。文中还提供了大量示例代码,帮助读者更好地理解和应用这些知识点。
31 1
[Python]知识点
|
20天前
|
缓存 前端开发 JavaScript
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
在我们快速发展的在线环境中,只需几秒钟加载的网站就能真正脱颖而出。您是否知道加载时间较快的网站的转化率比加载时间较长的网站高出三倍?
23 0
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
|
21天前
|
存储 JSON 网络安全
使用 EFS 在 AWS Lambda 上安装 Python 依赖项
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
26 1
|
2月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
2月前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx
|
1月前
|
Python
Python编程中正则表达式的使用
【10月更文挑战第22天】正则表达式,一种强大的文本处理工具,在Python编程中有着广泛的应用。本文将介绍如何使用Python中的re库来使用正则表达式,包括如何创建、匹配、查找和替换字符串等。通过学习本文,你将能够掌握Python中正则表达式的基本使用方法。
|
1月前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
33 2
|
2月前
|
调度 Python
python知识点100篇系列(20)-python协程与异步编程asyncio
【10月更文挑战第8天】协程(Coroutine)是一种用户态内的上下文切换技术,通过单线程实现代码块间的切换执行。Python中实现协程的方法包括yield、asyncio模块及async/await关键字。其中,async/await结合asyncio模块可更便捷地编写和管理协程,支持异步IO操作,提高程序并发性能。协程函数、协程对象、Task对象等是其核心概念。
|
2月前
|
Python Windows
python知识点100篇系列(24)- 简单强大的日志记录器loguru
【10月更文挑战第11天】Loguru 是一个功能强大的日志记录库,支持日志滚动、压缩、定时删除、高亮和告警等功能。安装简单,使用方便,可通过 `pip install loguru` 快速安装。支持将日志输出到终端或文件,并提供丰富的配置选项,如按时间或大小滚动日志、压缩日志文件等。还支持与邮件通知模块结合,实现邮件告警功能。
python知识点100篇系列(24)- 简单强大的日志记录器loguru
|
2月前
|
自然语言处理 Python Windows
python知识点100篇系列(23)- 使用stylecloud生成词云
【10月更文挑战第10天】`stylecloud` 是 `wordcloud` 的优化版,支持使用 Font Awesome 图标自定义词云形状,操作更简便。本文介绍如何安装 `jieba` 和 `stylecloud` 库,并使用它们生成中文词云。通过 `jieba` 进行分词,再利用 `stylecloud` 的 `gen_stylecloud` 方法生成具有特定形状和颜色的词云图像。
python知识点100篇系列(23)- 使用stylecloud生成词云