admin管理员组

文章数量:1794759

Python中的匿名函数

Python中的匿名函数

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