Python Lambda 匿名函数详解:语法、用法与实战示例

Nora
Nora
发布时间:2026-10-15| 5人浏览过
原创

本文详细介绍 Python 中 Lambda 匿名函数的定义语法、参数规则及表达式限制。通过对比常规函数与匿名函数的代码实现,演示其在求最大值、列表映射、过滤及字典操作中的具体应用,帮助开发者掌握简洁高效的函数式编程技巧。

前言

在编写代码时,若无需为函数分配特定名称,可直接使用 lambda 关键字创建匿名函数。

语法结构如下:

变量名 = lambda 参数: 表达式

参数部分为可选内容,通常由逗号分隔的变量名组成,代表位置参数。

表达式部分不可包含循环语句或 return 关键字,但允许使用 if...else... 条件表达式。

注意事项:

1. 表达式内禁止使用循环和 return,但支持 if...else... 语句。

2. 参数并非必须,若存在多个参数,需以逗号分隔。

3. 表达式的计算结果将直接作为返回值返回。

一、创建无参匿名函数:


func = lambda: 3 > 2
ret = func()  # 调用匿名函数,变量名(),使用变量ret来接收表达式返回的内容
print(ret)     #True
def func():
    return 3 > 2
ret = func()
print(ret)   #True
# 和func=lambda :3>2  等价

运行结果:


True
True

二、创建带参数的匿名函数


def func(x, y):
    return x + y
ret = func(1, 2)
print(ret)    #3
#匿名函数
func = lambda x, y: x + y
ret = func(1, 2)  # 如果匿名函数有参数,调用匿名函数的时候需要传递实参。
print(ret)    #3

三、获取两个数中的最大值


def func(x, y):
    if x < y:
        return y
    else:
        return x
ret = func(30, 20)
print(ret)      #30
#匿名函数
func = lambda x, y: y if x < y else x
# 注意if和else 没有 : 不能换行,if判断体写在判断条件前面
ret = func(11, 2)
print(ret)    #11
func = lambda x, y: y if x < y else x

四、练习题:

1. 将 add() 方法改写为匿名函数


def add(x, y):
    return x + y
    
func = lambda x, y: x + y
ret = func(1, 2)
print(ret)      # 3

2. 利用 max 函数求解字典最大值


dic = {'k1': 10, 'k2': 200, 'k3': 20}
ret = max(dic)  # 默认比较的是字典的key的大小。ASCII对于的十进制
print(ret)     # k3
def func(key):
    return dic[key]
ret = max(dic, key=func) # 改变比较规则,用value比较大小,最终返回的函数是字典的key值
print(ret)    #  k2

使用匿名函数
ret = max(dic, key=lambda x: dic[x])  
print(ret)     #k2

3. 根据列表中字典的 'name' 字段值进行比较


 lst = [
        {'name': 'egon', 'price': 100},
        {'name': 'rdw', 'price': 666},
        {'name': 'zat', 'price': 1}
    ]
    # ret = max(lst)  # 报错,字典之间不能比较。
    # print(ret)
    def max_name(dic):
        return dic['name']  # 返回 字典 name对应的值
    ret = max(lst, key=max_name)  # 指定比较内容
    print(ret)
    使用匿名函数进行比较:
    ret = max(lst, key=lambda dic: dic['name'])  # 指定比较内容
    print(ret)

运行结果:


{'name': 'zat', 'price': 1}
{'name': 'zat', 'price': 1}

同理,也可根据列表中字典的 'price' 字段值大小进行比较


    lst = [
        {'name': 'egon', 'price': 100},
        {'name': 'rdw', 'price': 666},
        {'name': 'zat', 'price': 1}
    ]
    def max_price(dic):
        return dic['price']  # 返回 字典 price 的值
        匿名函数:
    ret = max(lst, key=lambda dic: dic['price'])  # 指定比较内容 100,666,1
    print(ret)    #{'name': 'rdw', 'price': 666}

4. 计算列表 lst 中每个元素的平方值


lst = [1, 3, 4]
def square(num):
    num2 = num * num
    return num2
ret = map(square, lst)  # 迭代器 1,4,16
for i in ret:
    print(i)     #  1,9,16
    匿名函数:
ret = map(lambda num: num * num, lst)
for i in ret:
    print(i)   #  1,9,16

5. 过滤出列表中的所有奇数:


lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def odd(num):
    if num % 2 == 1:
        return True
    else:
        return False
ret = filter(odd, lst)
print(list(ret))      #[1, 3, 5, 7, 9]
# 匿名函数:
ret = filter(lambda num: True if num % 2 == 1 else False, lst)
print(list(ret))     #[1, 3, 5, 7, 9]

6. 现有两个元组 (('a'), ('b')) 和 (('c'), ('d')),请使用 Python 匿名函数生成列表 [{'a':'c'}, {'b':'d'}]


tup1 = (('a'), ('b'))
tup2 = (('c'), ('d'))
# [{'a':'c'},{'b':'d'}]
ret = zip(tup1, tup2)  #(('a','c'),('b','d'))
def func(tup):
    #('a','c')  ('b','d')
    return {tup[0],tup[1]}
ret1=map(func,ret)
print(list(ret1))    #[{'a': 'c'}, {'b': 'd'}]
# 匿名函数:
ret2 = list(map(lambda tup: {tup[0]: tup[1]}, ret))
print(ret2)     #[{'a': 'c'}, {'b': 'd'}]

至此,关于 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 算法库。