网络宝典
第二套高阶模板 · 更大气的阅读体验

lambda 表达式和类:什么时候该用哪个?

发布时间:2026-04-12 02:30:23 阅读:2 次

写代码时经常遇到这种场景:需要传一个简单函数进去,比如排序时按某个字段比大小,或者给列表每个元素加个处理逻辑。这时候你可能随手就写了个 def 函数,但其实——一行就能搞定的事,真没必要单独定义一个名字。

lambda 是什么?

lambda 表达式就是个‘匿名函数’,没有名字,只干一件小事。比如 Python 里把列表里的数字都乘 2:

nums = [1, 2, 3, 4]
result = list(map(lambda x: x * 2, nums))

这里 lambda x: x * 2 就是 lambda 表达式,等价于:

def double(x):
    return x * 2

但写法更轻量,适合‘即用即抛’的场合。

(class)又是干啥的?

类是用来封装数据和行为的。比如你做个小工具管理学生信息,得存姓名、年龄,还得有‘打印信息’‘算平均分’这些动作——这时候用类就顺手多了:

class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score
    
    def show(self):
        print(f'{self.name}: {self.score}')

s = Student('小明', 89)
s.show()

类能保存状态(比如 self.name),还能复用方法,是组织复杂逻辑的好帮手。

lambda 和类,不是非此即彼

有人以为‘用了 lambda 就不用类’,其实不是。它们解决的问题根本不同:lambda 是‘临时函数’,类是‘可复用的对象模板’。就像家里有把螺丝刀(lambda),也有一套工具箱(class)——拧颗螺丝用螺丝刀,修整台电脑就得打开工具箱。

再举个实际例子:写个按钮点击回调。前端 JavaScript 里常这么写:

button.addEventListener('click', () => console.log('点我了'));

这里用箭头函数(JS 的 lambda)很自然;但如果你要做个完整的计算器组件,带输入框、历史记录、清空功能……那就得用 class 封装整个逻辑。

一个小提醒

别为了用 lambda 而硬写。比如这样就不太合适:

process_data = lambda data: (
    data.strip().lower().replace(' ', '_')
    if isinstance(data, str) else str(data).strip()
)

逻辑一多,可读性反而下降。该用普通函数或类的时候,别强撑着塞进 lambda 里。