1.概念
匿名函数其实就是lambda表达式
语法 : lambda 形参列表:函数体
# 匿名函数 def text(x, y): result = x + y lambda x, y: x + y """ def text(x, y) 是def的声明部分,return x+y 是实现部分 lambda x,y是声明部分,x + y是实现部分 """
2. lambda 的特点以及优缺点
2.1 lambda 是对def标准形式定义函数的简化,因为只有一行代码
2.2 lambda 表示匿名函数,所以默认参数,关键字参数以及不定长参数都可以正常使用
2.3 lambda 仅仅是一个表达式,而不是一个语句
2.4 lambda 的主体部分是一个单个的语句,而不是代码块
2.5 lambda 拥有自己的命名空间,不能访问自有参数列表之外的或者全局变量
2.6 lambda 只能实现简单的逻辑,如果逻辑复杂且代码量较大,则不建议使用lambda,
降低代码的可读性,为后期的代码维护增加困难
2.7 在非多次调用函数的情况下,lambda简单而且性能较高
3. 匿名函数和正常函数的区别
# 1 def test(): print("test") # 打印出函数,和函数的类型 print(test, type(test)) test() # 调用函数 ''' 匿名函数不需要使用return进行值的返回,只需要将结果书写在函数体的部分, 值会被自动返回 ''' r1 = lambda: True print(r1,type(r1)) print(r1())
打印的结果:
根据运行结果可以发现,
①定义的函数,有test的函数名称,而使用匿名函数的 没有名称 函数的名称为 lambda函数
② 正常的函数调用时直接函数名(),而使用匿名函数是需要打印,或者赋值打印的
4.匿名函数的函数体可以直接写打印语句,但是返回值则为None
# 2. def test1(): print("test1") print(test1()) r2 = lambda: print("lambda_print") print(r2())
打印结果
5.有参数的匿名函数
# 3. 匿名函数的参数 r3 = lambda x: x ** 3 # 传递一个x,然后给x三次方,并返回 print(r3(2)) # 打印2的三次方 r4 = lambda x, y: x + y # 传递一个x和y,然后给相加,并返回 print(r4(3, 5)) # 打印3+5
打印结果
6.匿名函数可以使用默认参数,关键字参数,不定长参数
# 4. 匿名函数可以使用默认参数,关键字参数,不定长参数 r5 = lambda x, y=5: x + y # 默认参数 print(r5(2)) print(r5(2, 10)) print(r5(x=8, y=9)) # 关键字参数 r6 = lambda *a: a # 不定长参数 ,*a:代表可以输入多个或者0个值 print(r6(1, 2, 3, 4, 5, 6))
7. 练习
# 需求:比较两个数的大小,返回较大的数 # 1.用正常的方式 def compare(num1, num2): if num1 >= num2: return num1 else: return num2 print("传统的方式:", compare(9, 6)) # 2.用匿名函数 r7 = lambda num1, num2: num1 if (num1 >= num2) else num2 print("使用匿名函数:", r7(9, 3)) # 3.使用匿名函数另一种方式,直接赋值 r8 = (lambda num1, num2: num1 if (num1 >= num2) else num2)(9, 6) print("使用匿名函数另一种方式:", r8)
运行结果, 可以看出, 对于比较简单的逻辑,我们可以使用lambda的方式进行
更多推荐
Python中的匿名函数
发布评论