
Python 中定义函数有两种办法,一种是用惯例方法 def 定义,函数要指定名字,第二种是用 lambda 定义,不须要指定名字,称为 Lambda 函数。
Lambda 函数又称匿名函数,匿名函数就是没有名字的函数,函数没有名字也行?当然可以啦。有些函数如不雅只是临时一用,并且它的营业逻辑也很简单时,就没须要非给它取个名字弗成。
比如片子琅绫擎的群众演员,往往他们的戏份很少,最多是衬托主演,跑跑龙套,他们须要名字吗?不须要,因为他们仅仅只是临时出镜,下次可能就用不着了,所以犯不着操心思给他们每小我编个号取个名字,毕竟取个优雅的名字是很费劲的工作。
- >>> lambda x, y : x+y
- <function <lambda> at 0x102bc1c80>
x 和 y 是函数的两个参数,冒号后面的表达式是函数的返回值,你能一眼看出这个函数就是是在求两个变量的和,但作为一个函数,没有名字若何应用呢?这里我们暂且给这个匿名函数绑定一个名字,如许使得我们调用匿名函数成为可能
- >>> add = lambda x, y : x+y
- >>> add
- <function <lambda> at 0x102bc2140>
- >>> add(1,2)
- 3
它等同于惯例函数
- >>> def add2(x, y):
- ... return x+y
- ...
- >>> add2
- <function add2 at 0x102bc1c80>
- >>> add2(1,2)
- 3
如不雅定义匿名函数,还要给它绑定一个名字的话,有点画蛇添足,平日是直接应用 lambda 函数。那么 lamdba 函数的┞俘确应用处景在哪呢?
1、函数式编程
尽管 Python 算不上是一门纯函数式编程说话,但它本身供给了很多函数式编程的特点,像 map、reduce、filter、sorted 这些函数都支撑函数作为参数,lambda 函数就可以应用在函数式编程中。
请看题:一个整数列表,请求按照列表中元素的绝对值大年夜小升序分列,你会怎么做?思虑一分钟往下看
- >>> list1 = [3,5,-4,-1,0,-2,-6]
- >>> sorted(list1, key=lambda x: abs(x))
- [0, -1, -2, 3, -4, 5, -6]
排序函数 sorted 支撑接收一个函数作为参数,该参数作为 sorted 的排序根据,这里按照列表元素的绝对值进行排序,当然,我也可以用通俗函数来实现:
- >>> def foo(x):
- ... return abs(x)
- ...
- >>> sorted(list1, key=foo)
- [0, -1, -2, 3, -4, 5, -6]
2、闭包
闭包本身是一个晦涩难解的概念,它可以专门零丁用一篇文┞仿来介绍,不过在这里我们可以简单粗暴地舆解为闭包就是一个定义在函数内部的函数,闭包使得变量即使离开了该函数的感化域范围也依然能被拜访到。
推荐阅读
日前,中国互联网协会副理事长、国度信息化专家咨询委员会委员高新平易近,在腾讯研究院举办的数字经济公开课上就数字经济、虚拟经济、互联网经济的根本概念作了深刻阐释。他强调,如今部分处所一搞实体经济,就把互>>>详细阅读
本文标题:什么时候使用Lambda函数?
地址:http://www.17bianji.com/lsqh/35952.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示