Python:匿名函数 lambda

在 Python 中,lambda 是一种由表达式组成的匿名函数。它语法简洁、灵活高效,常用于函数作为参数传递的场景,尤其在处理简洁逻辑或与高阶函数结合时非常实用。

一、lambda 的定义与语法

lambda 函数是一种没有函数名的函数,通常用于临时、一次性使用的场景。

1、语法结构

apache 复制代码
lambda 参数1, 参数2, ... : 表达式

说明:

(1)lambda 是关键字,表示定义一个匿名函数。

(2)冒号左侧是参数列表,可以有多个参数。如果不想接受任何参数,可以写成 lambda: 表达式。

(3)冒号右侧必须是单个表达式,不能写语句块。表达式的结果会被自动返回。

(4)整个 lambda 表达式本质上就是一个函数对象,可以赋值给变量或作为参数传递。

2、基础用法

(1)与定义普通函数对比

python 复制代码
# 使用 lambda 定义平方函数square = lambda x: x * x    #绑定到名称 squareprint(square(3))  # 输出 9
# 等价的 def 写法def square(x):    return x * x

将 lambda 表达式绑定到名称后,就可将其作为函数来调用。

(2)可以有一个或多个参数

apache 复制代码
# 多参数加法add = lambda x, y: x + yprint(add(3, 5))  # 输出: 8

(3)冒号的右侧只能是单个表达式,不能包含赋值语句、循环或语句块。

python 复制代码
# 在 lambda 中使用条件表达式max_func = lambda a, b: a if a > b else bprint(max_func(3, 7))  # 7
nginx 复制代码
# 错误示例:lambda 中不能有赋值语句(= 是语句,不是表达式)lambda x: x = x + 1  # SyntaxError

二、lambda 与高阶函数

在 Python 中,高阶函数(Higher-Order Function)是指至少满足以下两点之一的函数:

🔹 接受一个或多个函数作为参数。

🔹 返回一个函数作为结果。

由于整个 lambda 表达式本质上是一个函数对象,因此它可以自然地作为高阶函数的参数或返回值。

示例:

python 复制代码
# 作为参数def apply_twice(func, x):    return func(func(x))
print(apply_twice(lambda x: x + 1, 3))  # 5
# 作为返回值(闭包)def make_adder(n):    return lambda x: x + nadd5 = make_adder(5)print(add5(3))  # 8

Python 的一些内置高阶函数与 lambda 搭配使用非常常见:

python 复制代码
# map:批量映射转换nums = [1, 2, 3]print(list(map(lambda x: x**2, nums)))  # [1, 4, 9]
# sorted:按长度排序words = ['apple', 'pear', 'banana', 'kiwi']print(sorted(words, key=lambda x: len(x)))  # ['kiwi', 'pear', 'apple', 'banana']
# filter:筛选偶数nums = [1, 2, 3, 4, 5, 6]print(list(filter(lambda x: x % 2 == 0, nums)))  # [2, 4, 6]
# reduce:连续归约from functools import reduceprint(reduce(lambda x, y: x * y, [1, 2, 3, 4]))  # 24

详情请参阅:

Python:lambda 在高阶函数中的应用

📘 小结

lambda 让代码更紧凑,特别适合临时性、小逻辑的函数传递。

推导式优先,内置函数优先,复杂逻辑用 def,lambda 保持小而美。

相关链接:

Python:lambda 在高阶函数中的应用

Python:lambda 的局限性与最佳实践

"点赞有美意,赞赏是鼓励"

相关推荐
冷雨夜中漫步6 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴6 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再6 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
m0_736919108 小时前
C++代码风格检查工具
开发语言·c++·算法
喵手8 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934738 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy8 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
黎雁·泠崖9 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_7634724610 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
肖永威10 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos