作家
登录

什么时候使用Lambda函数?

作者: 来源: 2017-06-28 17:19:46 阅读 我要评论

zen of python 中有如许一句话是 Explicit is better than implicit(清楚明了胜于晦涩)。记住,如不雅用 lambda 函数不克不及使你的代码变得更清楚时,这时你就要推敲应用惯例的方法来定义函数。

来看一个用 lambda 函数作为闭包的例子。

  1. >>> def my_add(n): 
  2.  
  3. ... return lambda x:x+n 
  4.  
  5. ... 
  6.  
  7. >>> add_3 = my_add(3) 
  8.  
  9. >>> add_3(7) 
  10.  
  11. 10  

先来看个简单 lambda 函数

这里的 lambda 函数就是一个闭包,在全局感化域范围中,add_3(7) 可以正常履行且返回值为10,之所以返回10是因为在 my_add 局部感化域中,变量 n 的值袈溱闭包的感化使得它在全局感化域也可以被拜访到。

只不过是这种方法代码看起来不敷 Pythonic 罢了。

换成惯例函数也可以实现闭包,只不过是这种方法稍显烦琐。

  1. >>> def my_add(n): 
  2.  
  3. ... def wrapper(x): 
  4.  
  5. ... return x+n 
  6.  
  7. ... return wrapper 
  8.  
  9. ... 
  10.  
  11. >>> add_5 = my_add(5) 
  12.  
  13. >>> add_5(2) 
  14.  
  15.  

那么是不是任何情况 lambda 函数都要比惯例函数更清楚清楚明了呢?看这个例子:

  1. f = lambda x: [[y for j, y in enumerate(set(x)) if (i >> j) & 1] for i in range(2**len(set(x)))] 

这是一个返回某个集合的所有子集的 lambda 函数,你看明白了吗?我是很难一眼看出来

【编辑推荐】

  1. 机械进修之用Python大年夜零实现贝叶斯分类器
  2. ShutIt:一个基于Python的shell主动化框架
  3. 代码如许写不止于优雅(Python 版)
  4. 完全懂得Python迭代对象、迭代器、生成器
  5. Python说话下的机械进修库
【义务编辑:枯木 TEL:(010)68476606】

  推荐阅读

  高新民:互联网经济大部分是实体经济

日前,中国互联网协会副理事长、国度信息化专家咨询委员会委员高新平易近,在腾讯研究院举办的数字经济公开课上就数字经济、虚拟经济、互联网经济的根本概念作了深刻阐释。他强调,如今部分处所一搞实体经济,就把互>>>详细阅读


本文标题:什么时候使用Lambda函数?

地址:http://www.17bianji.com/lsqh/35952.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)