2021-09-19 02:52:44
lambda 表达式是 Python 中用于创建匿名函数的简洁语法,无需使用 def 关键字即可定义短小的函数。
基本语法lambda 参数: 返回值例如:add = lambda x, y: x + y 定义了一个接收两个参数并返回其和的匿名函数,调用方式与普通函数相同(如 add(3, 4) 返回 7)。
与 def 的区别
语法简洁:lambda 适合简单逻辑(如单行表达式),而 def 支持复杂多行函数。
# lambdalambda x: x * 2# defdef multiply_by_two(x): return x * 2匿名性:lambda 通常无函数名(除非赋值给变量),而 def 必须命名。
表达式限制:lambda 只能包含一个表达式,不能包含语句;def 可包含任意代码块。
常见使用场景
回调函数:在 GUI 编程或异步操作中传递简单逻辑。
button.clicked.connect(lambda: print("Button clicked!"))简化代码:如列表排序时指定键函数。
items = [(1, 'a'), (3, 'b')]sorted_items = sorted(items, key=lambda x: x[0])结合高阶函数:与 map()、filter()、reduce() 配合使用。
# map 示例squared = list(map(lambda x: x2, [1, 2, 3])) # 输出 [1, 4, 9]# filter 示例evens = list(filter(lambda x: x % 2 == 0, [1, 2, 3])) # 输出 [2]传递额外参数:在信号与槽机制中动态绑定参数。
thread.ping_result_signal.connect(lambda ip, result, idx=index: self.update_label(ip, result, idx))适用与不适用场景
推荐使用 lambda:函数逻辑简单、仅临时使用或无需命名时。
避免使用 lambda:逻辑复杂、需多行语句或需重复调用时,此时应使用 def 提高可读性和可维护性。
总结:lambda 表达式通过简洁语法快速定义匿名函数,适合简化短小逻辑,但在复杂场景下应优先选择 def。