zen of python 中有如许一句话是 Explicit is better than implicit(清楚明了胜于晦涩)。记住,如不雅用 lambda 函数不克不及使你的代码变得更清楚时,这时你就要推敲应用惯例的方法来定义函数。
来看一个用 lambda 函数作为闭包的例子。
- >>> def my_add(n):
- ... return lambda x:x+n
- ...
- >>> add_3 = my_add(3)
- >>> add_3(7)
- 10
先来看个简单 lambda 函数
这里的 lambda 函数就是一个闭包,在全局感化域范围中,add_3(7) 可以正常履行且返回值为10,之所以返回10是因为在 my_add 局部感化域中,变量 n 的值袈溱闭包的感化使得它在全局感化域也可以被拜访到。
只不过是这种方法代码看起来不敷 Pythonic 罢了。
换成惯例函数也可以实现闭包,只不过是这种方法稍显烦琐。
- >>> def my_add(n):
- ... def wrapper(x):
- ... return x+n
- ... return wrapper
- ...
- >>> add_5 = my_add(5)
- >>> add_5(2)
- 7
那么是不是任何情况 lambda 函数都要比惯例函数更清楚清楚明了呢?看这个例子:
- f = lambda x: [[y for j, y in enumerate(set(x)) if (i >> j) & 1] for i in range(2**len(set(x)))]
这是一个返回某个集合的所有子集的 lambda 函数,你看明白了吗?我是很难一眼看出来
【编辑推荐】
- 机械进修之用Python大年夜零实现贝叶斯分类器
- ShutIt:一个基于Python的shell主动化框架
- 代码如许写不止于优雅(Python 版)
- 完全懂得Python迭代对象、迭代器、生成器
- Python说话下的机械进修库
推荐阅读
日前,中国互联网协会副理事长、国度信息化专家咨询委员会委员高新平易近,在腾讯研究院举办的数字经济公开课上就数字经济、虚拟经济、互联网经济的根本概念作了深刻阐释。他强调,如今部分处所一搞实体经济,就把互>>>详细阅读
本文标题:什么时候使用Lambda函数?
地址:http://www.17bianji.com/lsqh/35952.html
1/2 1

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