Python 匿名函数 Lambda 用法详解与实战

沈知远
沈知远
发布时间:2026-10-14| 4人浏览过
原创

本文深入解析 Python 中匿名函数(Lambda)的定义、语法及核心应用场景。详细阐述如何利用 Lambda 简化代码,包括作为参数传递给高阶函数、与 sorted/map 等内置函数配合使用,以及作为函数返回值返回匿名函数对象。通过具体代码示例展示其在实际开发中的灵活用法。

1. 匿名函数介绍

匿名函数是指无需显式定义标识符名称的函数或子程序。在 Python 中,可以通过 lambda 语法来定义匿名函数,其特点在于直接使用表达式进行定义,而无需像普通函数那样进行复杂的声明过程。

在 Python 编程中,如果不使用 def 关键字来声明函数名,而是采用 lambda 关键字来定义函数,这种函数即被称为匿名函数。

Lambda 函数可以接收任意数量的参数(包括零个参数),但只能返回一个表达式的计算结果。由于 Lambda 函数本质上是一个函数对象,因此可以直接将其赋值给一个变量,此时该变量即成为一个函数对象。

2. 语法

Lambda 函数的基本语法结构为:lambda 参数列表 : 表达式。

3. 使用场景

(1)当需要将一个函数对象作为参数传递给其他函数,或者作为函数的返回值时,可以直接定义一个 Lambda 函数来实现这一需求。

(2)当处理的业务逻辑完全符合 Lambda 函数的特征(即支持任意多个参数并返回单一值),且该函数仅在代码的单一位置使用,无需在其他地方复用,此时使用 Lambda 函数是合适的选择。

4. 匿名函数和普通函数的对比


def sum_func(a, b, c):
    return a + b + c
# 将匿名函数对象赋值给 sum_lambda
sum_lambda = lambda a, b, c: a + b + c
print(sum_func(1, 2, 3))  # 6
print(sum_lambda(1, 2, 3))  # 6

5. 匿名函数的多种形式


# 无参数
lambda_a = lambda :100
print(lambda_a())  # 100
 
# 一个参数
lambda_b = lambda num: num * 10
print(lambda_b(1))  # 10
 
# 多个参数
lambda_c = lambda a, b, c: a + b + c
print(lambda_c(1, 10, 100))  # 111
 
# 表达式分支
lambda_d = lambda x: x if x > 5 else x + 1
print(lambda_d(4))  # 5
print(lambda_d(6))  # 6

6. Lambda 作为一个参数传递


def sub_func(a, b, func):
    print("a = ", a)
    print("b = ", b)
    print("a - b = ", func(a, b))
sub_func(3, 2, lambda a, b: a - b)
# 结果:
#     a =  3
#     b =  2
#     a - b =  1

7. Lambda 函数与 Python 内置函数配合使用

sorted 是 Python 中用于对列表进行排序的内置函数。我们可以结合 Lambda 表达式来指定排序的关键字(key)。


member_list = [
    {"price": 9},
    {"price": 999},
    {"price": 99}
]
new_list = sorted(member_list, key=lambda dict_: dict_["price"])
print(new_list)  #  [{'price': 9}, {'price': 99}, {'price': 999}]

number_list = [100, 77, 69, 31, 44, 56]
num_sum = list(map(lambda x: {str(x): x}, number_list))
print(num_sum)  # [{'100': 100}, {'77': 77}, {'69': 69}, {'31': 31}, {'44': 44}, {'56': 56}]

map 是 Python 中用于执行映射操作的内置函数,它接收两个参数:第一个参数是一个函数,第二个参数是一个可迭代对象。Map 会遍历可迭代对象中的每个值,并将其依次传递给第一个参数指定的函数执行。我们可以使用 Lambda 来实现 map 中的函数参数部分。

8. Lambda 作为函数的返回值


def discount_func(discount):
    return lambda price: discount * price
 
p = discount_func(0.8)
print(p)  # <function discount_func.<locals>.<lambda> at 0x00000241352BAC10>
print(p(100))  # 80.0

匿名函数可以作为普通函数的返回值返回。例如,上述函数 discount_func 返回了一个设定了特定折扣率的匿名函数对象。调用这个返回的对象并传入价格参数,即可计算得到折扣后的价格。

到此这篇关于 Python 基础之匿名函数详解的文章就介绍到这了,更多相关 Python 匿名函数内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。