78 匿名函数(lambda)

文章目录

  • 1、定义
  • 2、使用"关键字参数"对匿名函数进行传参
  • 3、lambda 匿名函数设定默认值
  • 4、应用场合
    • 匿名函数作为参数传递
    • 作为内置函数的参数
  • 5、实例
  • 6、小结

匿名函数是指没有名字的函数,应用在需要一个函数,但是又不想费神去命名这个函数的场合。通常情况下,这样的函数只使用一次。

1、定义

Python中,使用lambda表达式创建匿名函数,其语法格式如下:

result = lambda [arg1 [,arg2,……,argn]]:expression

lambda函数返回函数名。
参数说明:

  • result:用于调用lambda表达式。
  • [arg1 [,arg2,……,argn]]:可选参数,用于指定要传递的参数列表,多个参数间使用逗号“,”分隔。
  • expression:必选参数,用于指定一个实现具体功能的表达式。如果有参数,那么在该表达式中将应用这些参数。

注意:使用lambda表达式时,参数可以有多个,用逗号“,”分隔,但是表达式只能有一个,即只能返回一个值。而且也不能出现其他非表达式语句(如forwhile)。

在这里插入图片描述
在这里插入图片描述
虽然使用lambda表达式比使用自定义函数的代码减少了一些,但是在使用lambda表达式时,需要定义一个变量,用于调用该lambda表达式。

练一练:定义匿名函数求2数之和。

2、使用"关键字参数"对匿名函数进行传参

在这里插入图片描述

3、lambda 匿名函数设定默认值

在这里插入图片描述

4、应用场合

匿名函数作为参数传递

在这里插入图片描述
如果求两个数的差呢?
在这里插入图片描述
在这里插入图片描述
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
在这里插入图片描述
eval 方法能使字符串本身的引号去掉,保留字符中表达式的原本属性。
在这里插入图片描述

作为内置函数的参数

想一想,下面的数据如何指定按agename排序?

stus = [{"name":"zhangsan", "age":18}, {"name":"lisi", "age":19}, {"name":"wangwu", "age":17}
]

在这里插入图片描述

5、实例

网上爬取的秒杀商品数据如下,每本图书包括图书名称、秒杀价格、原价。

bookinfo = [('不一样的卡梅拉(全套)',22.50,120),('Python程序开发',65.10,89.80),('摆渡人',23.40,36.00),('福尔摩斯探案全集8册',22.50,128)]

应用lambda实现对爬取到的秒杀商品信息进行排序(按秒杀价格升序排序)
在秒杀价格相同的情况下,按原价降序
折扣率 = 秒杀/原价,按折扣率升序排序

6、小结

python 使用 lambda 来创建匿名函数。所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部