博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python函数式编程:Lambda表达式
阅读量:7011 次
发布时间:2019-06-28

本文共 1012 字,大约阅读时间需要 3 分钟。

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

表达式是一个由变量、常量、有返回值的函数加运算符组成的一个式子,该式子是有返回值的 ,如  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表达式中封装有限的逻辑进去。

 

转载地址:http://vtttl.baihongyu.com/

你可能感兴趣的文章
[收藏学习]安全性相关
查看>>
测来测去,感觉REQUESTS最实在
查看>>
powershell 模拟IE行为
查看>>
细说ES7 JavaScript Decorators
查看>>
最好的团队
查看>>
Objective-C之@类别小实例
查看>>
IOS的唯一标识符问题(转)
查看>>
【Oracle】How to Rename or Move Datafiles and Logfiles 之一
查看>>
CYQ.Data 轻量数据访问层(六) 构造数据表
查看>>
iOS系统声音列表
查看>>
Linux0.11内核剖析--初始化程序(init)
查看>>
大数据网红发现神器
查看>>
[置顶]【原创】.NET开源压缩组件介绍与入门
查看>>
IOS开发之音频--录音
查看>>
JS魔法堂:那些困扰你的DOM集合类型
查看>>
手把手玩转win8开发系列课程(11)
查看>>
Spring AOP源码分析(八)SpringAOP要注意的地方
查看>>
SparkContext的初始化(季篇)——测量系统、ContextCleaner等组件介绍
查看>>
一千零一夜:检查数组包含某一目标元素的几种方法分析
查看>>
poj 1273 Drainage Ditches
查看>>