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 ...
随机推荐
- FormView分页显示数据的例子
%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FormView控件.aspx.cs ...
- python开发_大小写转换,首字母大写,去除特殊字符
这篇blog主要是总结我们在平常开发过程中对字符串的一些操作: #字母大小写转换 #首字母转大写 #去除字符串中特殊字符(如:'_','.',',',';'),然后再把去除后的字符串连接起来 #去除' ...
- 宣布在 Azure 镜像库中正式推出 Windows Server 2012 R2 并降低 Windows Azure 的实例定价
我们今天将宣布两条消息,为使用基础结构服务的客户提供更多选择和成本节约:在镜像库中推出 Windows Server 2012 R2 以及降低 Memory Intensive 计算实例定价. 虚拟机 ...
- JAVA GUI学习 - JList列表、JScrollPane滚动条组件学习
/** * 本例结合JList和JScrollPane共同使用 * @author Wfei * */ public class JListKnow extends JFrame { JList jL ...
- poj 2051 Argus(优先队列)
题目链接: http://poj.org/problem?id=2051 思路分析: 优先级问题,使用优先队列求解:当执行某个任务后,再增加一个任务到队列中, 该任务的优先级为执行任务的时间加上其时间 ...
- Poj 2371 Questions and answers(排序)
题目链接:http://poj.org/problem?id=2371 思路分析:使用计数排序或其他时间复杂度为O( log N )的排序. 代码如下: #include <iostream&g ...
- linux内核源码阅读之facebook硬盘加速flashcache之二
flashcache数据结构都在flashcache.h文件中,但在看数据结构之前,需要先过一遍flashcache是什么,要完成哪些功能?如果是自己设计这样一个系统的话,大概要怎么设计. 前面讲过, ...
- C#静态方法
C#静态方法 学习C#静态函数及变量的一个精典例子与代码 (1)用于对静态字段.只读字段等的初始化. (2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的. (3)类的 ...
- Enze frist day
今天是我来到云和学院正式开班上课的第一天,我选择学习的科目是.net.因为.net我在学校的时候接触过一些,所以我想要更加深入的去学习.我觉得一个学生在学习上最怕的是没有遇到一位负责任的好老师,但幸运 ...
- Raspberry 3安装docker
SD卡制作 准备一张4GB或者以上的micro sd卡,下载系统镜像,例如raspbian-jessie-lite.img,并使用刷机工具,如Pi filler将其写入sd卡,当然也可以使用命令行的d ...