python lambda表达式详解

python lambda表达式详解@pythonlambda表达式详解1、lambda简介先来看一段代码示例:第一行是lambda声明,x,y相当于传入的参数,整个函数会返回x+y的值。lambda作为一个表达式,定义了一个匿名函数,上例的代码x,y为入口参数,x+y为函数体。在这里lambda简化了函数定义的书写形式。python允许用lambda关键字创造匿名函数。匿名是不需要以标准的方式来声明,比如说使用def…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

@python lambda表达式详解

1、lambda简介

先来看一段代码示例:
在这里插入图片描述

第一行是lambda声明,x,y相当于传入的参数,整个函数会返回x+y的值。lambda作为一个表达式,定义了一个匿名函数,上例的代码x,y为入口参数,x+y为函数体。在这里lambda简化了函数定义的书写形式。

python允许用lambda关键字创造匿名函数。匿名是不需要以标准的方式来声明,比如说使用 def 语句。(除非赋值给一个局部变量,这样的对象也不会在任何的名字空间内创建名字,上面的例子中会创建名字。)

作为函数,它们也能有参数。一个完整的 lambda”语句”代表了一个表达式,这个表达式的定义体必须和声明放在同一行。语法如下:

lambda [arg1[, arg2, … argN]]: expression

参数是可选的,如果使用的参数话,参数通常也是表达式的一部分

2、lambda匿名函数与def区别

lambda 和def它两个的基本用法差不多,参数都是可选,也都会返回对象

如下:
在这里插入图片描述

不同之处:

lambda可以定义一个匿名函数,而def定义的函数必须有一个名字。这应该是lambda与def两者最大的区别。

lambda是一个表达式,而不是一个语句(lambda is an expression, not a statement.)因此,lambda能够出现在Python语法不允许def出现的地方——例如,在一个列表常量中或者函数调用的参数中。

lambda的主体是一个单个的表达式,而不是一个代码块。(lambda’s body is a single expression, not a block of statements.),lambda里面的语句相当于def中return中的代码一样。只能是简单的表达式,所以说lambda的能力小于def,在lambda中只能使用简单的语法,不能使用if else while return等语句

它的设计理念为:lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务。(lambda is designed for coding simple functions, and def handles larger tasks.)

3、lambda的使用

为什么要使用lambda?

1、lambda函数主要用来写一些小体量的一次性函数,避免污染环境,同时也能简化代码。

2、lambda起到了一种函数速写的作用,允许在使用的代码内嵌入一个函数的定义。他们完全是可选的(你总是能够使用def来替代它们),但是你仅需要嵌入小段可执行代码的情况下它们会带来一个更简洁的代码结构。

例如:

map( lambda x: x*x, [y for y in range(10)] )

这个写法要好过

def sq(x):

return x * x

map(sq, [y for y in range(10)])

3、lambda使用可以加参数也可以不加参数

有参数就如同上面的用法

无参数:
在这里插入图片描述

4、lambda通常用来编写跳转表(jump table),也就是行为的列表或字典,能够按照需要执行相应的动作。如下段代码所示。

在这里插入图片描述
总结:

1、lambda只是一个表达式,函数体比def简单很多

2、lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去

3、lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数

4、 简单单行代码或者一次性的函数可以用lambda函数来书写,可以让代码更简洁。

5、 对于复杂函数或者函数体体量大的函数,最好不要用lambda函数,会增加代码的阅读难度,使代码晦涩难懂。

6、 在非多次调用的函数的情况下,lambda表达式即用既得,提高性能

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180611.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • arm服务器测评_ARM:异军突起「建议收藏」

    arm服务器测评_ARM:异军突起「建议收藏」RISC:战火点燃RISC和CISC握手言和,这并非服务器市场竞争结束,而是新一轮战火点燃的信号。双方短暂的和平还因为现在的处理器速度与指令集构架的关系越来越小,指令集构架的影响力早已被CPU微结构,甚至更为贴近底层的设计所超越。而反观服务器市场,在中低档服务器全盘被x86所统治的情况下,高端服务器的竞争形势也很激烈。在高档服务器市场中,Compaq的Alpha、惠普的PA-RISC、MIPS公司…

  • Maven–如何下载JSONObject相关依赖架包

    Maven–如何下载JSONObject相关依赖架包一、开发场景Java开发当中经常需要Json格式的数据,这就用到JSONObject类,本文章只提供以下两种JSONObject对应架包的下载方式。com.alibaba.fastjson.JSONObject(依赖1个架包fastjson-1.2.28.jar)net.sf.json.JSONObject(依赖6个架包commons-beanutils-1.9.3.jar、commons-c…

  • js除法取整数取余数_java中取余中的余数怎么取

    js除法取整数取余数_java中取余中的余数怎么取取整1.取整//丢弃小数部分,保留整数部分parseInt(5/2)  //22.向上取整//向上取整,有小数就整数部分加1Math.ceil(5/2)  //33.向下取整//向下取整,丢弃小数部分Math.floor(5/2)  //24四舍五入//四舍五入Math.round(5/2)  //3取余//取余6%4 …

  • linux系统重启网卡命令_重启linux网卡

    linux系统重启网卡命令_重启linux网卡在实际工作中,经常会遇到Linux系统进行重启网卡的操作。接下来是小编为大家收集的linux系统重启网卡方法,希望能帮到大家。linux系统重启网卡方法一、servicenetworkrestart1、首先用CRT工具连接到Linux命令行界面。或者进入操作系统界面,选择终端输入。2、如果我们对所有的网卡进行重启操作。可以尝试输入:servicenetworkrestart命令进行操…

  • ORACLE中函数MONTHS_BETWEEN的使用

    ORACLE中函数MONTHS_BETWEEN的使用转自:https://www.cnblogs.com/pumushan/p/6655204.html格式:MONTHS_BETWEEN(DATE1,DATE2)MONTHS_BETWEEN函数返回两个日期之间的月份数。SQL>selectmonths_between(to_date(‘20090228′,’yyyymmdd’),to_date(‘20080228’,’y…

  • singleTask和startActivityResult「建议收藏」

    singleTask和startActivityResult「建议收藏」在稍微复杂点的项目中都有过singleTask、singleInstance,避免打开同一个Activity返回的时候A返回以后还是A吧,对A在AndroidManifest里面设置android:launchMode=”singleTask”即可避免这个问题,但是发现用startActivityResult的时候A跳转到B,在B里面setResult以后在A里面拿到的resultcode不是自己

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号