python -> lambda与def的差别
lambda能够定义一个匿名函数。而def定义的函数必须有一个名字。
这应该是lambda与def两者最大的差别。
与Javascript不同的是,python中匿名函数与非匿名函数须要使用不同的语法来定义。这是由于:
lambda是一个expression。不是一个statement。
lambda is an expression, not a statement.
因此lambda表达式能够出如今def无法出现的地方。比方list comprehension。
lambda表达式能够匿名也能够不匿名,可是def无法匿名。
lambda的函数体是一个简单的表达式而不是语句块。
lambda's body is a single expression, not a block of statements.
所以lambda中没有return语句。也不能使用if, while等等。其背后的设计哲学为:
lambda is designed for coding simple functions, and def handles larger tasks.
Python中的lambda比較简单,基本使用方法例如以下
>>> f = lambda x, y, z: x + y + z
>>> f(2, 3, 4)
其等价于
def func(x, y, z): return x + y + z
就像nested def一样,lambda也满足闭包
>>> def knights():
... title = 'Sir'
... action = lambda x: title + ' ' + x
... return action
...
>>> act = knights()
>>> msg = act('robin')
>>> msg
'Sir robin'
>>> act
<function knights.<locals>.<lambda> at 0xb6f7f80c>
</lambda></locals>
參考文献Learning Python 5th Edtion
python -> lambda与def的差别的更多相关文章
- Python的lambda函数与排序
Python的lambda函数与排序 2010-03-02 15:02 2809人阅读 评论(0) 收藏 举报 lambdapythonlistlispclass工作 目录(?)[+] 前几天 ...
- Python中lambda的使用,与它的三个好基友介绍!
匿名函数lambda 除了def语句,python还提供了一种生成函数对象的表达式形式.由于它与LISP语言中的一个工具类似,所以称为lambda. 就像def一样,这个表达式创建了一个之后能够调用的 ...
- Python中Lambda表达式使用
软件环境 Python: 2.7.13; win10 Lambda描述 python 使用 lambda 表达式来创建匿名函数 lambda只是一个表达式,函数体比def简单很多 lambda的主体是 ...
- python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法
Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda ...
- python之lambda函数/表达式
lambda函数也叫匿名函数,允许快速定义单行函数.通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 格式 lambda argument_list: express ...
- python中lambda使用
一.lambda函数 1.lambda函数基础: lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的.如下: """命名的foo函数&q ...
- Python中lambda表达式
一.lambda表达式形式 lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式.冒号前是参数,冒号后是返回值. lambda是一个表达式而不是一个语句. lambda表达式可以出现在Py ...
- python:lambda、filter、map、reduce
lambda 为关键字.filter,map,reduce为内置函数. lambda:实现python中单行最小函数. g = lambda x: x * 2 #相当于 def g(x): retur ...
- python 之Lambda表达式
python 的 lambda 表达式 python写一些执行脚本时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写个简单的脚本来管理服务器时,我们就不用专门定义函数然后再写调用,使用 ...
随机推荐
- socket网络编程基础小记
"一切皆Socket!" 话虽些许夸张.可是事实也是,如今的网络编程差点儿都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间怎样通 ...
- 第七章:JAVA引用ESWCF及部分方法说明
WCF搭建地址: http://127.0.0.1:8081/Search.svc?wsdl 操作如下: 引用webservice 2.输入webservice访问地址,点击下一步 3.点击Finis ...
- 字符编码,pyton中的encode,decode,unicode()
1.在计算机处理的程序中,对字符的处理有两种方式:编码或译码(encoding),解码(decoding) encoding:将字符串中的字符转换到对应编码字符集对应的代码点 ...
- rails引入bootstrap
1.在Gemfile中增加 gem 'bootstrap-sass', '~> 3.2.0.2'2.bundle install3.把assets/stylesheets/application ...
- hdu 4506 小明系列故事——师兄帮帮忙【幂取模乱搞】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4506 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- iOS extern 和 #define 使用
Easiest way: // Prefs.h#define PREFS_MY_CONSTANT @"prefs_my_constant" Better way: // Prefs ...
- 适用于iOS6之后的苹果提供的下拉刷新
一:iOS6.0及以后: 下拉刷新控件UIRefreshControl TableView属性:refreshControl 二:使用 - (void)colseTheTB { [self dismi ...
- push和unshift方法
push和unushift都是向数组插入元素. push是向数组尾部插入元素. unshift是向数组头部插入元素. 共同点:都可以一次插入多个元素. arrayObject.push(newelem ...
- struts 简单前台用户名校验
一个jsp <?xml version="1.0" encoding="GB18030" ?> <%@ page language=" ...
- cpu时间 / cpu利用率计算
CPU时间即反映CPU全速工作时完成该进程所花费的时间 cpu时间计算CPU TIME = (# of CPU Clock Cycles) x Clock Period // “#” 表示消耗 ...