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 相关文章推荐
python 多进程通信模块的简单实现
Feb 20 Python
python计算圆周率pi的方法
Jul 11 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
spyder常用快捷键(分享)
Jul 19 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
django模板语法学习之include示例详解
Dec 17 Python
wxpython实现图书管理系统
Mar 12 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
Python如何实现邮件功能
May 27 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
Nov 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
星际争霸任务指南——虫族
2020/03/04 星际争霸
php 远程关机操作的代码
2008/12/05 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
php旋转图片90度的方法
2013/11/07 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
体育教育毕业生自荐信
2013/11/21 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
营业员岗位职责
2015/02/11 职场文书
留学推荐信英文范文
2015/03/26 职场文书
统计员岗位职责范本
2015/04/14 职场文书
讲文明倡议书
2015/04/29 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL
使用Django框架创建项目
2022/06/10 Python
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS