page contents

Python 中的万能之王 Lambda 函数

如果你刚接触 Python,第一次看到 lambda,多半会皱一下眉:“哎这玩意看着咋这么怪?” 其实它很简单,就是个匿名函数,意思是——不需要给函数起名字。

attachments-2026-01-Fm0jm8Gb6966f10965c0f.png如果你刚接触 Python,第一次看到 lambda,多半会皱一下眉:“哎这玩意看着咋这么怪?” 其实它很简单,就是个匿名函数,意思是——不需要给函数起名字。

比如我们写个普通函数:

def add(a, b):

    return a + b

用 lambda 的话,只需要一行:

add = lambda a, b: a + b

你看,效果一模一样,就是更“短平快”。

它为啥叫“万能”?

不是说能干所有事,而是 在某些需要“临时函数”的场景,它几乎都能插一脚,所以显得特别“万能”。

特别是和下面这些 Python 内置函数一起出现时,那叫一个顺溜:

sorted()

map()

filter()

reduce()

举几个更生活化的例子,你一下就能明白它的魅力。

1. 排序神器:sorted + lambda

假设我们有一堆学生,包含名字和分数:

students = [

    {"name": "小王", "score": 88},

    {"name": "小李", "score": 95},

    {"name": "小赵", "score": 76},

]

要按照分数排序,你可以写这种“不用起名字”的函数:

sorted_students = sorted(students, key=lambda x: x["score"])

print(sorted_students)

lambda x: x["score"] 的意思就是“拿每个学生的 score 当排序依据”。

如果不用 lambda,你得写成这样:

def get_score(x):

    return x["score"]

sorted_students = sorted(students, key=get_score)

明显就啰嗦了。

2. 过滤数据:filter + lambda

比如你想筛选出分数 80 以上的学生:

good = list(filter(lambda s: s["score"] >= 80, students))

print(good)

一句话搞定。

3. 批量处理:map + lambda

比如把所有学生的名字取出来:

names = list(map(lambda s: s["name"], students))

print(names)

是不是比循环写两三行简单多了?

4. reduce + lambda:把一堆东西变成一个结果

比如求一组数字的总和(虽然 Python 有 sum):

from functools import reduce

nums = [1, 2, 3, 4]

total = reduce(lambda a, b: a + b, nums)

print(total)

Lambda 的局限性

虽然它很方便,但确实也不是那么“完美”。

1. 只能写一行

不能写多行逻辑,不能用 if...else... 块,只能用表达式。

2. 可读性差

写多了别人会看不懂,甚至你自己一周后也看不懂。

比如这种:

lambda x: x * 2 if x > 10 else x - 1

第一眼还好,但再复杂就麻烦了。

3. 调试很困难

因为没有名称,出现问题时不好定位。

最适合使用 Lambda 的场合

总结一句话——

临时用一下、逻辑很简单、不值得单独写个函数的地方。

只要你场景符合这一条,lambda 函数绝对是最佳选择。

比如:

某个排序规则

某个过滤条件

某个一行能说清楚的数学计算

某个 callback 回调(比如 GUI、网络框架里常见)

不应该用 Lambda 的场合

逻辑超过一行

要反复使用

和别人协作的项目(可读性差)

需要调试和打印中间值

这种场合老老实实写 def。

最后给你一个小案例:Lambda 做小型计算器

ops = {

    "+": lambda a, b: a + b,

    "-": lambda a, b: a - b,

    "*": lambda a, b: a * b,

    "/": lambda a, b: a / b,

}

print(ops["+"](3, 5))  # 8

print(ops["*"](4, 6))  # 24

是不是很巧妙? lambda 让我们可以把“操作符 → 对应的处理函数”写在一起,非常适合像“策略模式”这种轻量级逻辑。

你只要记住一句话:

lambda 能让你的 Python 写得更短,但不一定更好。 能让代码更简洁时用,复杂时就别用。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-01-14 09:27
  • 阅读 ( 36 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1783 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 1783 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章