Python函数式编程:Lambda表达式
首先我们要明白在编程语言中,表达式和语句的区别。
表达式是一个由变量、常量、有返回值的函数加运算符组成的一个式子,该式子是有返回值的 ,如 a + 1 就是个表达式,
单独的一个常量、变量 或函数调用也是一个表达式。
而语句通常是值程序设计语言中的一个指令,如 if, for ,print , break 等等 这些都是语句,语句是程序设计语言流程控制的语法部分。
在python中,lambda表达式 是指一个匿名的函数。 我们举例来说明:
>>> def fun(a):
... return a+1;
...
>>> f = fun;
>>> f(3)
4
>>> f(5)
6 >>> def call(f,n):
... return f(n)*2
...
>>> call(fun,3)
8
上面的代码,定义了一个函数 fun,它的函数体只有一个单独的 "return 表达式"语句。
后面的语句,演示了可以将函数作为值赋给一个变量,或者将函数作为参数传递给另外一个函数的操作。
在python 中,对于这种函数体只有一个单独的 "return 表达式"语句的函数,可以把它定义为一个lambda表达式。
lambda表达式相当于函数体为单个return语句的普通函数的匿名函数,但没有return语句,可以把它赋值给变量,或作为参数传递,或作为函数值返回。
其语法格式是:
lambda 逗号分隔的参数列表 : 表达式
下面举例说明
>>> f=lambda x : x+1
>>> f(3)
4
>>> def call(f,n):
... print f(n)
...
>>> call(lambda x : x*x ,10)
100
上面的第一个语句,定义了一个lambda表达式,并赋值给了变量f,可以看出f就是一个函数。
最后一个语句将lambda表达式作为参数传递给了一个函数。
从上面的例子可以看出,lambda表达式 就是一个函数(可以带参数,有返回值),并且是匿名的函数,这在很多场景下都是有用的,尤其是在python的函数式编程的各个api中非常有用,如 filter, map,reduce等。关于python的函数式编程api,后面的文章中会涉及到。
需要注意的是,lambda表达式的主体是一个表达式(和普通表达式没有任何区别),而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
Python函数式编程:Lambda表达式的更多相关文章
- 函数式编程/lambda表达式入门
函数式编程/lambda表达式入门 本篇主要讲解 lambda表达式的入门,涉及为什么使用函数式编程,以及jdk8提供的函数式接口 和 接口的默认方法 等等 1.什么是命令式编程 命令式编程就是我们去 ...
- 函数式编程--lambda表达式对比匿名内部类
从前面的整理中我们看出了,Lambda表达式其实是匿名内部类的一种简化,因此它可以部分取代匿名内部类. 1,Lambda表达式与匿名内部类存在如下相同点: 1),Lambda表达式与匿名内部类一样,都 ...
- Python函数式编程:内置函数map()使用说明
一.概述 map操作是函数式编程中的重要技术之一,其作用就是对一个集合中的每个元素做处理,生成一个新的元素,由这些新的元素组成一个新的集合的返回. 所以map操作后,产生的新集合的元素个数和原集合的元 ...
- python函数式编程,列表生成式
1.python 中常见的集中存储数据的结构: 列表 集合 字典 元组 字符串 双队列 堆 其中最常见的就是列表,字典. 2.下面讲一些运用循环获取字典列表的元素 >>> dic={ ...
- python 函数式编程学习笔记
函数基础 一个函数就是将一些语句集合在一起的部件,它们能够不止一次地在程序中运行.函数的主要作用: 最大化的代码重用和最小化代码冗余 流程的分解 一般地,函数讲的流程是:告诉你怎样去做某事,而不是让你 ...
- python函数式编程之返回函数、匿名函数、装饰器、偏函数学习
python函数式编程之返回函数 高阶函数处理可以接受函数作为参数外,还可以把函数作为结果值返回. 函数作为返回值 def laxy_sum(*args): def sum(): ax = 0; fo ...
- python函数和lambda表达式学习笔记
1. python函数 不同于其他语言,python支持函数返回多个值 为函数提供说明文档:help(函数名)或者函数名.__doc__ def str_max(str1, str2): ''' 比较 ...
- Python函数式编程:从入门到走火入魔
一行代码显示"爱心" >>> print]+(y*-)**-(x**(y*<= ,)]),-,-)]) Python函数式编程:从入门到走火入魔 # @fi ...
- (转)Python函数式编程——map()、reduce()
转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于se ...
随机推荐
- OSG项目经验2<在场景中添加文字面版>
添加文字版需要用到osg的三个名字空间: osgText::Text,这个类用来添加文字和设置文字的一些属性: ...
- Trie三兄弟——标准Trie、压缩Trie、后缀Trie
1.Trie导引 Trie树是一种基于树的数据结构,又称单词查找树.前缀树,字典树,是一种哈希树的变种.应用于字符串的统计与排序,经常被搜索引擎系统用于文本词频统计.用于存储字符串以便支持快速模式匹配 ...
- 《UNIX环境高级编程》笔记--文件共享
1.文件共享 内核使用3种数据结构来表示打开的文件,他们的关系如下: 每个进程都有一张进程表项,记录进程打开的文件: fd标志:close_on_exec,若一个文件描述符在close_on_exec ...
- Eclipse创建新项目时无法输入项目名的解决方法
放假耍了那么久,也是该收心忙活了. 今天打开Eclipse新建项目时,发生了一个很奇怪的情况,就是在下面这个位置的输入框无法输入. 经过百度之后,发现解决方案是(原地址点我) Eclipse图标右键 ...
- iOS Dev (67) 单例的实现
iOS Dev (67) 单例的实现 博客:http://blog.csdn.net/prevention 作者:大锐哥 摘自:Learn iPhone and iPad cocos2d Game D ...
- Objective-c 方法的调用
在书写了类的声明和实现后,应用程序如何去调用它呢? 在Objective-c中,调用方法的简单格式如下: 1⃣ [实例 方法]; 如: [person setAge:32]; 其中 pe ...
- css精灵(css script 技术)
上班差不多有15天了,感觉每天都有写不完的也页面,每天都有不同的东西需要学习进步,很充实哦.今天接触到css精灵这个东西.其实之前有看过这种技术,但是没有操作过,只是听说这个技术很强大,能干嘛干嘛,但 ...
- c# 获取指定目录下的所有文件并显示在网页上
参考文献: FileInfo 的使用 https://msdn.microsoft.com/zh-cn/library/system.io.fileinfo_methods(v=vs.110).as ...
- nopcommerce插件使用
nopcommerce是国外用.net开发的电商b2c开源项目,主要涉及技术包括了ef+mvc. 今天主要分析nop的插件机制. 什么是插件?插件是预先开发好的可以独立运行的功能模块,把单独的功能模块 ...
- c#关于EXCEL导入数据库的做法
以下例子转载:互联网 先在类中定义一个方法名为ExecleDs的方法,用于将Excel表里的数据填充到DataSet中,代码如下 public DataSet ExecleDs(string file ...