Python lambda(匿名函数)函数总结
2016-05-13 22:06
585 查看
Python lambda(匿名函数)函数总结
除了def语句之外,Python还提供了一种生成函数对象的表达式形式。由于它与LISP语言中的一个工具很相似,所以就称为lambda。表达式创建一个之后能够调用的函数,但是它返回了一个函数而不是将这个函数赋值给一个变量名,这也是lambda有时候叫做匿名函数的原因。
lambda表达式
lambda的一般形式是关键字lambda,之后是一个或多个参数,紧跟的是一个冒号,之后是一个表达式:
lambda 参数1,参数2,参数3,…,参数n : 表达式
lambda特点
1 lambda是一个表达式,而不是一个语句,所以lambda可以出现在python语 法不允许def出现的地方。
2 lambda的主题是一个单个表达式,而不是一个代码块,lambda通常要比def功能要小:仅能够在lambda主体中封装有限的逻辑进去,连if语句都不能用。所以lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务。
几个例子:
与之效果相同的def表达式为:
默认参数也能够在lambda参数中使用,就像在def中使用一样:
在lambda主体中的代码像在def内代码一样遵循相同的作用域查找法则。Lambda表达式引入的一个本地作用域更像一个嵌套的def语句,将自动从上层函数中、模块中以及内置作用域中查找变量名。
根据参数是否为1 决定s为yes还是no
为什么使用lambda
通常来说,lambda起到了一种函数速写的作用,允许在使用的代码内嵌入一个函数的定义。它们完全是可选的(当然你可以使用def语句代替),但在你仅需要嵌入小段可执行代码的情况下它们会带来更简洁的代码结构。在非多次调用的函数的情况下,lambda表达式即用既得,提高性能。
除了def语句之外,Python还提供了一种生成函数对象的表达式形式。由于它与LISP语言中的一个工具很相似,所以就称为lambda。表达式创建一个之后能够调用的函数,但是它返回了一个函数而不是将这个函数赋值给一个变量名,这也是lambda有时候叫做匿名函数的原因。
lambda表达式
lambda的一般形式是关键字lambda,之后是一个或多个参数,紧跟的是一个冒号,之后是一个表达式:
lambda 参数1,参数2,参数3,…,参数n : 表达式
lambda特点
1 lambda是一个表达式,而不是一个语句,所以lambda可以出现在python语 法不允许def出现的地方。
2 lambda的主题是一个单个表达式,而不是一个代码块,lambda通常要比def功能要小:仅能够在lambda主体中封装有限的逻辑进去,连if语句都不能用。所以lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务。
几个例子:
>>def foo():return ‘hello’ #函数名为foo >>lambda : ‘hello’ #无参数 无函数名 >>f = lambda x, y, z: x + y + z >>f(2,3,4) 9
与之效果相同的def表达式为:
>>def func(x, y, z): ... return x + y + z ... >>func(2,3,4) 9
默认参数也能够在lambda参数中使用,就像在def中使用一样:
>>x = (lambda a = ’fee’,b = ‘file’, c = ‘foe’: a + b + c) >>x(‘wee’) ‘weefiefoe’
在lambda主体中的代码像在def内代码一样遵循相同的作用域查找法则。Lambda表达式引入的一个本地作用域更像一个嵌套的def语句,将自动从上层函数中、模块中以及内置作用域中查找变量名。
>>def knights(): ... Title = ‘sir’ ... action = (lambda x: title + ‘ ‘ + x) ... return action >>act = knights() #把函数action赋值给act >>act(‘robin’) #调用action() ‘Sir robin’
根据参数是否为1 决定s为yes还是no
>>> s = lambda x:"yes" if x==1 else "no" >>> s(0) 'no' >>> s(1) 'yes'
为什么使用lambda
通常来说,lambda起到了一种函数速写的作用,允许在使用的代码内嵌入一个函数的定义。它们完全是可选的(当然你可以使用def语句代替),但在你仅需要嵌入小段可执行代码的情况下它们会带来更简洁的代码结构。在非多次调用的函数的情况下,lambda表达式即用既得,提高性能。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法