Python26 Lambda表达式

1.什么是lambda表达式

lambda 是 Python 中的一个关键字,用于定义简单的匿名函数。与 def 关键字定义的标准函数不同,lambda 函数主要用于需要一个函数对象作为参数的简短操作。lambda 函数的设计哲学是简洁,因此它只能包含一条表达式,而不能是复杂的代码块。

以下是 lambda 和 def 之间的一些主要区别:

  1. 匿名性:

    • lambda 函数是匿名的,它们没有函数名

    • def 定义的函数有明确的名称

  2. 复杂性:

    • lambda 函数只能包含一条表达式,不能有多个语句或复杂的控制流(如循环或条件判断)

    • def 定义的函数可以包含多条语句和复杂的控制流

  3. 用途:

    • lambda 通常用于需要简单函数作为参数的场合,如 map(), filter(), sorted(), 或作为回调函数

    • def 用于定义任何类型的函数,无论其复杂性如何

  4. 语法:

    • lambda 的语法是 lambda arguments: expression

    • def 的语法是 def function_name(arguments): 然后是函数体

例如,使用 lambda 定义一个计算两个数之和的匿名函数:

复制代码
add = lambda x, y: x + y
print(add(3, 4))  # 输出 7

与使用 def 定义相同的函数:

复制代码
def add_with_def(x, y):
    return x + y

print(add_with_def(3, 4))  # 输出 7

lambda 表达式的作用:

  • lambda 表达式提供了一种在代码中快速定义小函数的方式,而无需为其命名或定义完整的函数体。

  • 它允许将函数作为其他函数的参数,或者作为数据结构(如列表或字典)中的元素进行传递。

  • 由于其简洁性,lambda 表达式特别适用于需要一行代码即可解决的简单任务。

由于 lambda 自身的限制,对于更复杂的任务,应该使用 def 来定义函数。

2.lambda表达式的使用

除上述用法外,lambda也可以定义在def函数中 。这里定义了一个action函数,返回了一个lambda表达式。其中lambda表达式获取到了上层def作用域的变量名x的值。a是action函数的返回值,a(22),即是调用了action返回的lambda表达式。

复制代码
def action(x):
    return lambda y:x+y
a=action(6)
print(a(22))

# 输出:
'''
28
'''

也可以把def直接写成lambda形式。如下:

复制代码
b=lambda x:lambda y:x+y
a=b(3)
a(2)

# 输出:
'''
5
'''

使用内置函数map()进行操作如下:

复制代码
# 内置函数
# 1.map
# 遍历序列,对序列中每个元素进行操作,最终获取新的序列
li=[11,22,33]
new_list=map(lambda a:a+100,li)
for i in new_list:
    print(i)

# 输出:
'''
111
122
133
'''

使用内置函数filter()进行操作如下:

复制代码
# 2.filter
# 对序列中的元素进行筛选,最终获取符合条件的序列
li=[11,22,33]
new_list=filter(lambda arg:arg>22,li)
for i in new_list:
    print(i)

# 输出:
'''
33
'''

以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

相关推荐
旋生万物7 小时前
螺旋角分布的功率谱分析:多窗谱 + FDR 校正
开发语言·python
专业程序开发源8 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
wuyk5558 小时前
Python 网络爬虫入门到实战 第 04 章:请求头、UA 伪装、超时、异常处理、基础反爬绕过
开发语言·爬虫·python
kaiyou20268 小时前
用户研究岗秋招,统计分析能力怎么学习和证明?
数据库·python·学习
weixin_440730508 小时前
装饰器decorator总结(函数即是变量、高阶函数、嵌套函数、参数组)
python·装饰器
零基础1238 小时前
LLM Agent 驱动的物模型构建:从设备手册到边缘接入的自动化实践
运维·人工智能·经验分享·python·自动化
zyj8890919 小时前
工厂标识系统设计规范?工厂标识牌有哪些类型?
python·设计规范
weixin_440730509 小时前
迭代器Iterator(列表生成器、可迭代的如何生成迭代器)
开发语言·python
weixin_440730509 小时前
内置函数、json文本、pickle二进制
开发语言·python·json