Python lambda和Python def区别分析


Posted in Python onNovember 30, 2014

Python支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做lambda的函数,是从Lisp借用来的,可以用在任何需要函数的地方。

lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda?

>>> def f(x):
...   return x+2
...
>>> f(1)
3
>>> f = lambda x:x+2
>>> f(1)
3
>>> (lambda x:x+2)(1)
3

Python def和Python lambda它们有相似点也有不同点。
相似点: 这两个很重要的相似点就是都可以定义一些固定的方法或者是流程,供给程序来调用,比如上面例子中定义一个变量加2的方法。 输出的结果都是3,如果你要完成一些固定的流程的话,上面几种你都可以任意选择。

上面是相同点,那么有那些不同点?
它们的主要不同点是Python def是语句而Python lambda是表达式。lambda简化了函数定义的书写形式,使代码更为简洁。但是使用函数的定义方式更为直观,易理解。

Python里面语句是可以嵌套的,比如你需要根据某个条件来定义方法,那只能用def。用lambda就会报错。

>>> if a==1:
...   def info():
...     print '1'*5
... else:
...   def info2():
...     print 'info2'

而有的时候你需要在python表达式里操作的时候,那需要用到表达式嵌套,这个时候Python def就不能得到你想要的结果,那只能用Python lambda,如下例子:
输出e字符串出现频率最高的字母:

>>> str='www.linuxeye.com linuxeye.com'
>>> L = ([(i,str.count(i)) for i in set(str)])
[(' ', 1), ('c', 2), ('e', 4), ('i', 2), ('m', 2), ('l', 2), ('o', 2), ('n', 2), ('u', 2), ('w', 3), ('y', 2), ('x', 2), ('.', 3)]
>>> L.sort(key = lambda k:k[1],reverse = True)
>>> print L[0][0]
e
Python 相关文章推荐
Django中对通过测试的用户进行限制访问的方法
Jul 23 Python
Python多线程实现同步的四种方式
May 02 Python
Python基础教程之利用期物处理并发
Mar 29 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
python 求定积分和不定积分示例
Nov 20 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
appium+python adb常用命令分享
Mar 06 Python
python文件操作seek()偏移量,读取指正到指定位置操作
Jul 05 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
python 实现朴素贝叶斯算法的示例
Sep 30 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
Python中的xlrd模块使用整理
Jun 15 Python
Python内置函数之filter map reduce介绍
Nov 30 #Python
Python Queue模块详解
Nov 30 #Python
Python socket C/S结构的聊天室应用实现
Nov 30 #Python
Python open()文件处理使用介绍
Nov 30 #Python
Python fileinput模块使用介绍
Nov 30 #Python
Python 列表list使用介绍
Nov 30 #Python
Python 字典dict使用介绍
Nov 30 #Python
You might like
PHP中soap的用法实例
2014/10/24 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
两个Javascript小tip资料
2010/11/23 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
ReactNative实现Toast的示例
2017/12/31 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
微信小程序制作表格的方法
2019/02/14 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
python发送伪造的arp请求
2014/01/09 Python
python2.7的编码问题与解决方法
2016/10/04 Python
详解Python中的动态属性和特性
2018/04/07 Python
python线程池threadpool使用篇
2018/04/27 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
用python批量移动文件
2021/01/14 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
养殖项目策划书范文
2014/01/13 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫
Oracle 多表查询基本语法实例
2022/04/18 Oracle
Python+pyaudio实现音频控制示例详解
2022/07/23 Python