- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一道面试题让我重新学了一遍匿名函数
首先祝各位节日愉快,不管有没有npy,大家还是要愉快,过节也不能停止学习。上一篇文章 群友问了道3行代码的python面试题,我懵逼了...给大家说了一道Python面试题,很多小伙伴都拍了本人大腿,我竟然这么无知。
不要慌,今日kuls带大家来学习学习匿名函数。首先看这个名字就晓得这个函数没出名字(禁止套娃),那它是个啥玩意?
匿名函数
大家不慌,其实匿名函数只要一行代码:
lambda?argument1,?argument2,...?argumentN?:?expression
先直接给大家看一个小案例,我们再来解释是啥意思:
f?=?lambda?a,?b,?c:?a+b+cprint(f(6,?6,?6))
把上面的函数写成一般函数:
def?f(a,?b,?c):????return?a+b+cprint(f(6,?6,?6))
信任大家看到了它的一般函数就晓得是啥意思了。我们看到上面的代码,在匿名函数中我们使用lambda关键字来表示匿名函数。
冒号之前是我们的变量,冒号之后是我们的表达式。
大家可能发觉我们lambda表达式中是没有return语句的,由于lambda不需要它来前往,表达式本身结果就是前往值。
跟函数的区分
既然说lambda是属于表达式,那么它必定跟函数是有区分的,举一个简约的例子:表达式可以在list中使用,而函数则不行。
[(lambda?x:x**2)(x)?for?x?in?range(10)]
输出结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
有一部分小伙伴可能不太懂上面的for循环语句,我在这里给大家分析一下:
[(lambda?x:x**2)(x)?for?x?in?range(10)]
这个lambda表达式在list中,这个不用多说,但是后面那个(x)是啥意思呢?我们首先把它去掉打印一下:
[(lambda?x:x**2)?for?x?in?range(10)]
输出结果:
[function?.?at?0x1014bbf80,?function?.?at?0x10146dcb0,?function?.?at?0x101465dd0,?function?.?at?0x1014b3dd0,?function?.?at?0x1014b3c20,?function?.?at?0x1014b3d40,?function?.?at?0x1014b3b90,?function?.?at?0x1014b3b00,?function?.?at?0x1014b3cb0,?function?.?at?0x1014818c0]
我们可以看到前往的是函数地址,这里也就说明此时的列表中存储的只是内存地址,并没有真正的调用lambda函数进行计算。这样也就说明白(x)的作用就是类似于函数中的参数,将for循环中的x值传给lambda表达式,然后进行计算。
除此之外,lambda表达式还能作为函数的参数,这里我就不去呈现了。
一些有意思的匿名函数
这里的一些匿名函数,我也是从网上摘取过来的,大家可以看看这些匿名函数。
无参匿名函数:
t?=?lambda?:?True?#分号前无任何参数t()True
等价于下面的def定义的函数
def?func():?return?Truefunc()True
参数存在默认值
f2?=?lambda?x,y=3:?x*yprint(f2(2))
结果:
6
表达式后传参
(lambda?x,y:?x?if?x?y?else?y)(103,102)
输出:
103
由于篇幅缘由这里就举几个这样的例子,需要看更多有意思的匿名函数,大家可以自行百度。
匿名函数的好处
我们接触了匿名函数,并且晓得它的基本使用。那这玩意到底有啥用?
其实大家能够很直观的就能够看到,使用匿名函数削减了我们的代码量,大家不要忽视这一点,认为它并没有给我们省很多的代码量,当你做的项目足够大时,你会恨不得少一个字母。
函数式编程
说到了lambda表达式,我们不得不提Python的函数式编程。什么是函数式编程?指代码中每一块都是不行变的,都由纯函数的方式组成。这里的纯函数,是指函数本身相互独立、互不影响,对于相同的输入,总会有相同的输出,没有任何副作用。
大家可能还是不太理解什么是函数式编程,到底啥不能转变,我们举个简约的例子:
l?=?[1,2,3]def?a(l):????for?i?in?range(0,len(l)):????????l[i]?+=?10????return?lprint(a(l))
大家可以看到,上面我们将列表l中的值全部加10,这样列表中的值发生了转变,也就是说我
您可能关注的文档
最近下载
- 成考真题政治题目及答案.docx VIP
- 大家的日语(第二版)(初级)2(第26-50课)习题解答.pdf
- 2025年事业单位工勤技能-甘肃-甘肃电工四级(中级工)历年参考题典型考点含答案解析(5卷版).docx VIP
- 2018寒假托管招生广告.docx VIP
- GB55020-2021《建筑给水排水与节水通用规范》废止的现行工程建设标准相 精品.pdf VIP
- 《油气管道安全管理》课件.ppt VIP
- DB37∕T 3489-2019 山东省农产品质量安全监测抽样技术规范.docx VIP
- 新解读《GB_T 4340.2-2012金属材料 维氏硬度试验 第2部分:硬度计的检验与校准》.docx VIP
- GB/T 12706.3-2020 额定电压1kV(Um1.2 kV)到35kV(Um40.5 kV)挤包绝缘电力电缆及附件 第3部分:额定电压35kV(Um40.5kV)电缆.pdf
- 《主体结构工程检测》PPT课件.pptx VIP
文档评论(0)