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 ...
随机推荐
- C 根据行来读取文件 字符串的截取
// TestCFile.cpp : Defines the entry point for the console application. // #include "stdafx.h&q ...
- 使用django+celery+RabbitMQ实现异步执行
http://www.yu180.com/group/view/259 推荐一个解决框架 https://github.com/maccman/juggernaut Realtime server p ...
- tcpdump抓包并保存成cap文件
首选介绍一下tcpdump的常用参数 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接 ...
- JAVA GUI学习 - JProgressBar进度条组件摘录
public class JProgressBarTest extends JFrame{ public JProgressBarTest() { super(); setTitle("表格 ...
- 如何用python抓取js生成的数据 - SegmentFault
如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...
- python利用utf-8编码判断中文英文字符(转)
下面这个小工具包含了判断unicode是否是汉字.数字.英文或者其他字符,全角符号转半角符号,unicode字符串归一化等工作. #!/usr/bin/env python # -*- coding: ...
- vs2010经常使用快捷键
调试快捷键 F6: 生成解决方式 Ctrl+F6: 生成当前项目 F7: 查看代码 Shift+F7: 查看窗口设计器 F5: 启动调试 Ctrl+F5: 開始运行(不调试) Shift+F5: 停止 ...
- BZOJ2440(全然平方数)二分+莫比乌斯容斥
题意:全然平方数是指含有平方数因子的数.求第ki个非全然平方数. 解法:比較明显的二分,getsum(int middle)求1-middle有多少个非全然平方数,然后二分.求1-middle的非全然 ...
- C++对C语言的非面向对象特性扩充(1)
我将分3篇来介绍C++相对于C在非对象特性上的扩充,今天要讲的是C++在注释,输入输出,局部变量说明的扩充,以及const修饰符与C中的#define的比较. 1.C++注释除了包括原有C的块注释/* ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋( 枚举 )
O(N2)算出有x条直径然后答案就是x(x-1)/2...这个数据范围是闹哪样! ----------------------------------------------------------- ...