首先我们要明白在编程语言中,表达式和语句的区别。

表达式是一个由变量、常量、有返回值的函数加运算符组成的一个式子,该式子是有返回值的 ,如  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表达式的更多相关文章

  1. 函数式编程/lambda表达式入门

    函数式编程/lambda表达式入门 本篇主要讲解 lambda表达式的入门,涉及为什么使用函数式编程,以及jdk8提供的函数式接口 和 接口的默认方法 等等 1.什么是命令式编程 命令式编程就是我们去 ...

  2. 函数式编程--lambda表达式对比匿名内部类

    从前面的整理中我们看出了,Lambda表达式其实是匿名内部类的一种简化,因此它可以部分取代匿名内部类. 1,Lambda表达式与匿名内部类存在如下相同点: 1),Lambda表达式与匿名内部类一样,都 ...

  3. Python函数式编程:内置函数map()使用说明

    一.概述 map操作是函数式编程中的重要技术之一,其作用就是对一个集合中的每个元素做处理,生成一个新的元素,由这些新的元素组成一个新的集合的返回. 所以map操作后,产生的新集合的元素个数和原集合的元 ...

  4. python函数式编程,列表生成式

    1.python 中常见的集中存储数据的结构: 列表 集合 字典 元组 字符串 双队列 堆 其中最常见的就是列表,字典. 2.下面讲一些运用循环获取字典列表的元素 >>> dic={ ...

  5. python 函数式编程学习笔记

    函数基础 一个函数就是将一些语句集合在一起的部件,它们能够不止一次地在程序中运行.函数的主要作用: 最大化的代码重用和最小化代码冗余 流程的分解 一般地,函数讲的流程是:告诉你怎样去做某事,而不是让你 ...

  6. python函数式编程之返回函数、匿名函数、装饰器、偏函数学习

    python函数式编程之返回函数 高阶函数处理可以接受函数作为参数外,还可以把函数作为结果值返回. 函数作为返回值 def laxy_sum(*args): def sum(): ax = 0; fo ...

  7. python函数和lambda表达式学习笔记

    1. python函数 不同于其他语言,python支持函数返回多个值 为函数提供说明文档:help(函数名)或者函数名.__doc__ def str_max(str1, str2): ''' 比较 ...

  8. Python函数式编程:从入门到走火入魔

    一行代码显示"爱心" >>> print]+(y*-)**-(x**(y*<= ,)]),-,-)]) Python函数式编程:从入门到走火入魔 # @fi ...

  9. (转)Python函数式编程——map()、reduce()

    转自:http://www.jianshu.com/p/7fe3408e6048 1.map(func,seq1[,seq2...]) Python 函数式编程中的map()函数是将func作用于se ...

随机推荐

  1. OSG项目经验2<在场景中添加文字面版>

    添加文字版需要用到osg的三个名字空间:                         osgText::Text,这个类用来添加文字和设置文字的一些属性:                     ...

  2. Trie三兄弟——标准Trie、压缩Trie、后缀Trie

    1.Trie导引 Trie树是一种基于树的数据结构,又称单词查找树.前缀树,字典树,是一种哈希树的变种.应用于字符串的统计与排序,经常被搜索引擎系统用于文本词频统计.用于存储字符串以便支持快速模式匹配 ...

  3. 《UNIX环境高级编程》笔记--文件共享

    1.文件共享 内核使用3种数据结构来表示打开的文件,他们的关系如下: 每个进程都有一张进程表项,记录进程打开的文件: fd标志:close_on_exec,若一个文件描述符在close_on_exec ...

  4. Eclipse创建新项目时无法输入项目名的解决方法

    放假耍了那么久,也是该收心忙活了. 今天打开Eclipse新建项目时,发生了一个很奇怪的情况,就是在下面这个位置的输入框无法输入. 经过百度之后,发现解决方案是(原地址点我) Eclipse图标右键 ...

  5. iOS Dev (67) 单例的实现

    iOS Dev (67) 单例的实现 博客:http://blog.csdn.net/prevention 作者:大锐哥 摘自:Learn iPhone and iPad cocos2d Game D ...

  6. Objective-c 方法的调用

    在书写了类的声明和实现后,应用程序如何去调用它呢? 在Objective-c中,调用方法的简单格式如下: 1⃣   [实例  方法];    如: [person setAge:32];  其中 pe ...

  7. css精灵(css script 技术)

    上班差不多有15天了,感觉每天都有写不完的也页面,每天都有不同的东西需要学习进步,很充实哦.今天接触到css精灵这个东西.其实之前有看过这种技术,但是没有操作过,只是听说这个技术很强大,能干嘛干嘛,但 ...

  8. c# 获取指定目录下的所有文件并显示在网页上

    参考文献: FileInfo 的使用  https://msdn.microsoft.com/zh-cn/library/system.io.fileinfo_methods(v=vs.110).as ...

  9. nopcommerce插件使用

    nopcommerce是国外用.net开发的电商b2c开源项目,主要涉及技术包括了ef+mvc. 今天主要分析nop的插件机制. 什么是插件?插件是预先开发好的可以独立运行的功能模块,把单独的功能模块 ...

  10. c#关于EXCEL导入数据库的做法

    以下例子转载:互联网 先在类中定义一个方法名为ExecleDs的方法,用于将Excel表里的数据填充到DataSet中,代码如下 public DataSet ExecleDs(string file ...