匿名函数(lambda表达式)01
1.python基础之注释2.python语言学习路线(基础)3.python源码结构4.python发展史及python应用场景5.变量6.bug及debug7.常见数据类型及其转换8.字符串格式化9.转义符10.字符串在货币、日期、精度的处理11.字符编解码12.字符编解码及其相互转换13.内置函数-help-帮助文档14.内置函数print-输出15.内置函数input16.运算符17.int的缓存策略(特别容易混)18.判断语句19.random模块20.判断语句+ random的应用-剪刀石头布游戏21.三元运算符(if else的简写)22.循环语句-while23.循环语句-while-练习题24.循环语句for循环25.循环语句 + else26.字符串类str27.正则在字符串中的简单应用28.列表(List)29.列表list的sort方法的坑30.列表综合应用-8个教室随机分配到3个教室31.元组32.自动组包 & 自动解包33.字典34.集合35.公共操作36.公共操作-推导式(集合、列表、字典)37.函数定义、调用、闭包38.拆包和交换变量值39.函数的变量作用域、返回值、参数40.函数递归
41.匿名函数(lambda表达式)01
42.内置函数abs43.内置函数round44.内置函数abs0245.高阶函数46.内置高阶函数map47.内置高阶函数reduce48.内置函数reduce49.学生管理系统-函数&循环&运算符综合练习50.文件操作之语法51.文件操作2-最佳实践52.文件操作之seek53.文件及文件夹操作54.面向对象基本概念55.面向对象之类、对象的定义56.添加和获取对象属性57.面向对象之魔法方法58.魔法函数 __repr__() 和 __str__()的区别59.魔法方法__len__60.魔法方法之__getitem__(self, key)、__setitem__(self, key, value) 和 __delitem__(self, key) 61.魔法方法之__iter__(self) && __next__(self)62.TypeError: iter() returned non-iterator of type 'MyIterable'63.魔法方法之__contains__()64.魔法方法之__call__65.魔法方法之__getattr__(), __setattr__(), 和 __delattr__66.__eq__(), __lt__(), 和 __gt__() 67.案例:烤地瓜68.案例:给房子置办家具69.继承70.继承之子类复用父类的属性、方法71.继承的分类72.MRO73.继承之子类重写父类同名属性和方法74.⼦类调⽤⽗类的同名⽅法和属性75.私有属性&&方法的定义&访问限制76.setter&getter方法访问私有属性77.__mro__属性78.python 面向对象3大特征详解79. 类属性和实例属性80.类属性和实例属性最佳实践81.类方法82.静态方法83.异常基础84.多组异常处理基础85.多组异常处理86.使用Python内置的错误信息87.捕获所有异常88.手动抛异常(raise)89.try-except-else-finally90.断言assert在异常中应用91.自定义异常类92.模块93.常见的5种模块导入94.模块的定位顺序95.__all__变量限制、明确导入范围96.包97.时间模块datetime98.多任务编程之并发、并行概念99.进程实现多任务(进程概念、单进程、多进程执行多任务)匿名函数
顾名思义就是没有名字的函数。
匿名函数是一种没有函数名的函数,也称为"lambda函数"。
它是一种简洁的函数定义方式,可以在需要函数对象的任何地方使用,并且通常用于简化代码或作为其他函数的参数。
语法
1 lambda arguments: expression
其中,arguments
是函数的参数列表,而expression
是函数体中的单个表达式,该表达式的结果将作为函数的返回值。
1 add = lambda x, y: x + y # python一切皆对象,add是此匿名函数的引用,可以当函数名使用 2 result = add(2, 3) # 调用lambda函数,返回结果: 5
定义了一个lambda函数,接受两个参数x和y,并返回它们的和。然后,我们调用lambda函数并传递参数2和3,得到结果5
示例
1 ''' 2 匿名函数最佳实践: 3 1. 简短、清晰的表达式: 匿名函数应尽量保持简短和清晰,只包含必要的表达式。复杂的逻辑或多行代码更适合使用常规函数。 4 2. 仅限于简单操作: 匿名函数适合于执行简单的操作,如数学运算、过滤、映射等。对于复杂的任务,建议使用常规函数来提高可读性和维护性。 5 3. 作为其他函数的参数: 匿名函数通常作为其他函数的参数传递,例如在map()、filter()和reduce()等函数中使用。 6 7 匿名函数的注意事项: 8 1. 无法包含多个表达式: 匿名函数只能包含单个表达式,无法包含多个语句或复杂的控制流程。 9 2. 没有函数名称: 匿名函数是没有显示的函数名称,因此无法像常规函数那样被引用或调用。 10 3. 可读性和可维护性: 尽管匿名函数可以简化代码,但过度使用匿名函数可能会降低代码的可读性和可维护性。请在适当的时候使用匿名函数。 11 4. 局部变量的限制: 匿名函数的主体只能包含表达式,而不能包含赋值语句。如果需要在匿名函数中使用局部变量,请考虑使用默认参数或闭包。 12 ''' 13 14 ''' 15 1. 体验lambda与普通函数 16 需求:函数 返回值100 17 ''' 18 19 20 # 1.1 函数 21 def fn1(): 22 return 100 23 24 25 result = fn1() # 调用函数,并返回执行结果 26 print(result) # 100 27 28 # 1.2 lambda 匿名函数 29 fn2 = lambda: 100 # lambda 参数列表: 表达式,此处是只有表达式即100,fn2是匿名函数的引用,调用时需要添加()即fn2() 30 print(fn2) # lambda内存地址 <function <lambda> at 0x00000252EFC704A0> 31 32 # 100返回值 调用函数 33 print(fn2()) # 100 34 35 ''' 36 2. lambda加法计算 37 需求:计算任意两个数字的累加和 38 ''' 39 40 41 # 1. 函数 42 def add(a, b): 43 return a + b 44 45 46 result = add(1, 2) 47 print(result) 48 49 # 2. lambda 50 fn1 = lambda a, b: a + b # 参数是a,b,表达式 a + b,其实隐藏了return 表达式即return a + b 51 print(fn1(2, 3)) # 5 52 53 ''' 54 3. 函数参数: 55 1. 无参 56 2. 1个参数 57 3. 默认参数 58 4. 可变参数:可变参数位置参数 59 5. 可变参数:可变参数关键字参数 60 ''' 61 # 1. 无参数 62 fn1 = lambda: 100 63 print(fn1()) # 100 64 65 # 2. 一个参数 66 fn2 = lambda a: a 67 print(fn2('hello world')) # hello world 68 69 # 3. 默认参数/缺省参数 70 fn3 = lambda a, b, c=100: a + b + c 71 print(fn3(10, 20)) # 130 72 print(fn3(10, 20, 200)) # 230 73 74 # 4. 可变参数:不定长位置参数 *args 75 fn4 = lambda *args: args 76 print(fn4(10, 20)) # (10, 20) 77 print(fn4(10, 20, 30, 40)) # (10, 20, 30, 40) 78 print(fn4(10)) # (10,) 79 80 # 5. 可变参数:不定长关键字参数 **kwargs 81 fn5 = lambda **kwargs: kwargs 82 print(fn5(name='Python')) # {'name': 'Python'} 83 print(fn5(name='Python', age=30)) # {'name': 'Python', 'age': 30} 84 85 ''' 86 4. 带判断的lambdba 87 ''' 88 # lambda 获取2个数字的最大数 89 fn1 = lambda a, b: a if a > b else b # 参数列表:a,b 表达式是 a if a > b else b 90 print(fn1(1000, 500)) # 1000 91 92 ''' 93 5. lamdba表达式结合列表sort方法进行排序 94 ''' 95 students = [ 96 {'name': 'TOM', 'age': 20}, 97 {'name': 'ROSE', 'age': 19}, 98 {'name': 'Jack', 'age': 22} 99 ] 100 101 # 语法: sort(key=lambda..., reverse=bool数据) 102 # 5.1通过key设置排序规则即按x['name']升序排序 103 students.sort(key=lambda x: x['name']) 104 print(students) # [{'name': 'Jack', 'age': 22}, {'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}] 105 106 # 5.2通过key设置排序规则即按x['name']降序排序 107 students.sort(key=lambda x: x['name'], reverse=True) 108 print(students) # [{'name': 'TOM', 'age': 20}, {'name': 'ROSE', 'age': 19}, {'name': 'Jack', 'age': 22}] 109 110 # 5.3 通过key设置排序规则即按x['age']升序排序 111 students.sort(key=lambda x: x['age']) 112 print(students) # [{'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}, {'name': 'Jack', 'age': 22}]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!