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中array.sum(axis=?)的用法介绍
Jun 28 Python
基于python实现名片管理系统
Nov 30 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
Django实现WebSSH操作物理机或虚拟机的方法
Nov 06 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
Feb 11 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
Python小白不正确的使用类变量实例
May 29 Python
Python如何将装饰器定义为类
Jul 30 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
Python实现简单的猜单词
Jun 15 Python
基于Python实现流星雨效果的绘制
Mar 18 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 url 加密解密函数代码
2011/08/26 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
php 7新特性之类型申明详解
2017/06/06 PHP
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
python原始套接字编程示例分享
2014/02/21 Python
python实现复制整个目录的方法
2015/05/12 Python
Python类的用法实例浅析
2015/05/27 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
python实现字符串加密成纯数字
2019/03/19 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
超市端午节活动方案
2014/01/23 职场文书
申论倡议书范文
2014/05/13 职场文书
运动与健康自我评价
2015/03/09 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
死亡诗社观后感
2015/06/05 职场文书
男生贾里读书笔记
2015/06/30 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
python常见的占位符总结及用法
2021/07/02 Python
Python测试框架pytest高阶用法全面详解
2022/06/01 Python