python基础之匿名函数详解

这篇文章主要介绍了python基础之匿名函数详解,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有很好的帮助,需要的朋友可以参考下

1.匿名函数介绍

匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。

在python中,不通过def来声明函数名字,而是通过 lambda 关键字来定义的函数称为匿名函数。

lambda函数能接收任何数量(可以是0个)的参数,但只能返回一个表达式的值,lambda函数是一个函数对象,直接赋值给一个变量,这个变量就成了一个函数对象。

2.语法

lambda 参数:表达式

3.使用场景

(1)需要将一个函数对象作为参数来传递时,可以直接定义一个lambda函数(作为函数的参数或是返回值)

(2)要处理的业务符合 lambda 函数的情况(任意多个参数和一个返回值),并且只有一个地方会使用这个函数,不会在其他地方重用,可以使用lambda函数

4.匿名函数和普通函数的对比

 def sum_func(a, b, c):     return a + b + c # 将匿名函数对象赋值给 sum_lambda sum_lambda = lambda a, b, c: a + b + c print(sum_func(1, 2, 3))  # 6 print(sum_lambda(1, 2, 3))  # 6 

5.匿名函数的多种形式

 # 无参数 lambda_a = lambda :100 print(lambda_a())  # 100 # 一个参数 lambda_b = lambda num: num * 10 print(lambda_b(1))  # 10 # 多个参数 lambda_c = lambda a, b, c: a + b + c print(lambda_c(1, 10, 100))  # 111 # 表达式分支 lambda_d = lambda x: x if x > 5 else x + 1 print(lambda_d(4))  # 5 print(lambda_d(6))  # 6 

6.lambda 作为一个参数传递

 def sub_func(a, b, func):     print("a = ", a)     print("b = ", b)     print("a - b = ", func(a, b)) sub_func(3, 2, lambda a, b: a - b) # 结果: #     a =  3 #     b =  2 #     a - b =  1 

7. lambda函数与python内置函数配合使用

sorted是Python中对列表排序的内置函数,我们使用lambda来获取排序的key

 member_list = [     {"price": 9},     {"price": 999},     {"price": 99} ] new_list = sorted(member_list, key=lambda dict_: dict_["price"]) print(new_list)  #  [{'price': 9}, {'price': 99}, {'price': 999}] 
 number_list = [100, 77, 69, 31, 44, 56] num_sum = list(map(lambda x: {str(x): x}, number_list)) print(num_sum)  # [{'100': 100}, {'77': 77}, {'69': 69}, {'31': 31}, {'44': 44}, {'56': 56}] 

map是Python中用来做映射的一个内置函数,接收两个参数,第一个参数是一个函数,第二个参数是一个可迭代对象,map会遍历可迭代对象的值,然后将值依次传递给函数执行。我们使用lambda来实现map中的函数参数。

8.lambda 作为函数的返回值

 def discount_func(discount):     return lambda price: discount * price p = discount_func(0.8) print(p)  # . at 0x00000241352BAC10> print(p(100))  # 80.0 

 匿名函数可以作为一个函数的返回值,上面函数discount_func返回一个设定了折扣的匿名函数对象,调用这个对象,传入价格,就可以得到折扣后的价格

以上就是python基础之匿名函数详解的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » python