如何在 Python 中使用 Lambda 函数(匿名函数)
了解如何在 Python 中使用 lambda 函数。掌握匿名函数、内联回调以及使用 lambda 键对列表数据进行排序。
概述
在Python中,函数是一等公民,这意味着它们可以分配给变量,作为参数传递给其他函数,并从函数返回。虽然标准函数是使用“def”关键字声明的,但 Python 还提供了用于创建匿名内联函数的简写语法:“lambda”函数。
lambda 函数是使用“lambda”关键字定义的,后跟参数列表、冒号和单个表达式。语法是“lambda 参数:表达式”。与“def”函数不同,lambda 不需要“return”语句;表达式的结果会自动返回。它们仅限于单个逻辑行,这使得它们非常适合简单的一次性操作。
Lambda 函数最常用作高阶函数的参数,例如“sorted()”、“map()”和“filter()”。例如,您可以将 lambda 函数传递给“sorted()”的“key”参数来定义自定义排序条件,或者将它们用作图形或事件驱动应用程序中的轻量级回调函数。
代码和执行输出
该脚本演示了使用 lambda 构造轻量级匿名函数。
lambda_functions.py
在编辑器中尝试# 1. Simple lambda function assigned to a variable
double = lambda x: x * 2
print("Double of 5:", double(5))
# 2. Multi-argument lambda
add = lambda x, y: x + y
print("Sum of 3 + 4:", add(3, 4))
# 3. Using lambda as a sorting key (sorting by age)
people = [
{"name": "Alice", "age": 28},
{"name": "Bob", "age": 22},
{"name": "Charlie", "age": 35}
]
people.sort(key=lambda person: person["age"])
print("Sorted by age:", people)端子输出
Double of 5: 10
Sum of 3 + 4: 7
Sorted by age: [{'name': 'Bob', 'age': 22}, {'name': 'Alice', 'age': 28}, {'name': 'Charlie', 'age': 35}]逐步实施
- 编写 lambda 关键字,后跟以逗号分隔的参数名称。
- 放置一个冒号,后跟要计算并返回的单个表达式。
- 直接将 lambda 作为回调传递给sorted()、map() 或filter() 等函数。
常见问题解答
lambda 函数可以包含循环或多条语句吗?
不,Python 中的 lambda 函数严格限制为单个表达式。如果需要复杂的逻辑、循环或变量赋值,则必须使用 def 定义标准函数。
我应该将 lambda 函数分配给变量吗?
一般不会。 PEP 8 指南建议使用标准 def 语句,而不是将 lambda 分配给变量,因为标准函数提供更好的堆栈跟踪名称。
相关主题
推荐的 Python 资源
通过相关的交互式教程、备忘单和代码比较来扩展您的知识。