我们前面讲过 Python 中,如果想要使用函数,就必须要先声明再调用,每一个函数都有自己的名字。但是有这么个奇葩的函数,它就是没有名字的,也不要声明,直接就能用。但是想要用好,还是需要一定时间的积累,它就是 lambda 匿名函数。
匿名函数的定义格式: lambda 参数,参数,······:表达式
1.匿名函数由关键字 lambda 修饰;
2.匿名函数冒号 : 之前的是函数的参数,匿名函数可以是无参匿名函数,也可以是带参匿名函数;
3.匿名函数冒号 : 之后是表达式,匿名函数不需要写 return,表达式的结果就是返回值;
代码示例:
# 需求:计算多个值的和 # 常规写法 def num(x,y,j): sum = x + y + j return sum print(num(20,30,40)) # 输出结果:90 # 使用 lambda 匿名函数表达式的写法 sum = lambda x,y,j:x+y+j print(sum(20,30,40)) # 输出结果:90 # lambda 匿名函数表达式变形 print((lambda x,y,j:x+y+j)(20,30,40)) # 输出结果:90 a = lambda x,y:x+y b = a(12,14) print(b) ''' 输出结果 26 ''' # 上面的功能传统函数写法如下 def sum(num1,num2): result = num1 + num2 return result a = sum(12,14) print(a)
优势 : 相对于普通函数,lambda匿名函数比较简洁
缺点 : 只能适用简单的业务场景,复杂的计算没有办法完成
案例示例:
# 需求:对字符串按照空格拆分,合并成一个新的字符串 # 传统写法 # 定义带空格的字符串 str1 = "我是世界上最美丽的人 而且还很有魅力 性感" # 用空格进行切割字符串str1,输出的是列表,再用join进行拼接成字符串 list1 = str1.split(" ") # 用join进行拼接成字符串 str2 = "".join(list1) print(str2) # 输出结果:我是世界上最美丽的人而且还很有魅力性感 # 变形 # 定义带空格的字符串 str1 = "我是世界上最美丽的人 而且还很有魅力 性感" print("".join(str1.split(" "))) # 输出结果:我是世界上最美丽的人而且还很有魅力性感 # 使用 lambda 匿名函数表达式 print((lambda text:"".join(text.split(" ")))(text = "我是世界上最美丽的人 而且还很有魅力 性感")) # 输出结果:我是世界上最美丽的人而且还很有魅力性感 # 如果想要多次使用lambda 匿名函数表达式 str1 = "我是世界上最美丽的人 而且还很有魅力 性感" a = lambda text:"".join(text.split(" ")) print(a(str1) # 输出结果:我是世界上最美丽的人而且还很有魅力性感
匿名函数和普通函数对比之下,匿名函数的使用能让代码更加简洁,当然匿名函数使用场景适用于比较简单的需求,对于复杂的计算,匿名函数是无法完成的;