安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

一文读懂Python高阶函数

4月8日 霸鲸观投稿
  高阶函数
  将函数作为参数传入,这样的函数称为高阶函数。函数式编程就是指这种高度抽象的编程范式。
  变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。如下所示:1deffun0(x,y,fun):2returnfun(x)fun(y)3print(fun0(9,10,abs))
  1。高阶函数之map
  map(fun,lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表返回。1list1〔0,1,2,3,4,5,6,7,8,9〕23listresult〔〕4foriinlist1:5listresult。append(iii)6print(listresult)78defcube(x):求立方9returnxxx10print(list(map(cube,list1)))111213list2〔10,11,12,13,14,15,16,17,18,19〕14defmulti(x,y):15returnxy1617map接收两个list,可用于两个列表的对应索引数据进行操作18print(list(map(multi,list1,list2)))
  2。高阶函数之匿名函数
  定义一个匿名函数并调用,定义格式如lambdaarg1,arg2:表达式1flambdax,y:xy2print(f(10,20))34不需要显式地定义函数,直接传入匿名函数更方便5print(list(map(lambdax:xxx,list1)))
  3。高阶函数之reduce
  reduce把一个函数作用在一个序列〔x1,x2,x3,〕上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。1fromfunctoolsimportreduce2list1〔1,3,5,7,9〕如何让列表里面的值变成一个数字13579输出3deffun(x,y):4returnx10y5print(reduce(fun,list1))6print(reduce(lambdax,y:x10y,list1))利用lambda来实现78print(reduce(lambdax,y:xy,range(1,101)))从12。。。99100的总和
  4。高阶函数之filter
  filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。1deffun2(x):2returnx203list2〔1,2,3,4,5,6,7,8,9〕4print(list(filter(fun2,list2)))56print(list(filter(fun2,range(1,101))))输出1到100的偶数7print(list(filter(lambdax:x20,list2)))利用lambda来实现89获取非空字符串函数10deffun3():11list1〔tony,is,good,man,,hello,〕12forelinlist1:13if(elandel。strip()):14print(el)15fun3()1617使用filter实现fun3的功能18defisnotnull(str1):19returnstr1andstr1。strip()20list3〔tony,is,good,man,,hello,〕21print(list(filter(isnotnull,list3)))
  5。高阶函数之装饰器1importtime2defwastetime(func):用于计算函数执行的耗时3deffunction(args,kwargs):4starttimetime。time()5resultfunc(args,kwargs)6endtimetime。time()7spendendtimestarttime8print(函数s总共耗时。3f秒:(func。name,spend))9returnresult10returnfunction1112wastetime13defabc():14print(aaa)15abc()1617defgetlog(func):能装饰的方法添加日志输出18importtime19defwrapper(args,kw):20print(str(time。asctime())calls():func。name)21returnfunc(args,kw)22returnwrapper2324getlog25defabd():26print(bbb)27abd()
  6。高阶函数之retrunfunction(返回函数)1wastetime2defgetdict(kwargs):3defgetjson():4jsons5forkey,valueinkwargs。items():6jsonskeystr(value)7returnjsons8returngetjson91011print(getdict(nametony,age33))12fgetdict(nametony,age33)13print(f())14print(getdict(nametony,age33)())
  7。高阶函数之sorted排序函数1numlist〔34,55,2,3,444,500〕2print(sorted(numlist))默认升序3print(sorted(numlist,reverseTrue))reverseTrue表示降序45对字符串ASCIIA65a97进行排序6strlist〔ac,aa,AB,d,c〕7print(sorted(strlist))8print(sorted(strlist,reverseTrue))910用key来接收指定函数来进行自定义排序11strlist〔ac,aa,AB,d,c〕12print(sorted(strlist,keystr。lower))不考虑大小写1314numlist〔34,55,2,3,444,500,599,222〕15print(sorted(numlist,keyabs))用绝对值进行排序1617classTester:18definit(self,age,name):19self。ageage20self。namename2122t1Tester(10,tony)23t2Tester(20,jack)24t3Tester(30,tom)2526resultlist(sorted(〔t1,t2,t3〕,keylambdax:x。age))针对对象实例进行排序,指定了年龄27fortestinresult:28print(test。name,test。age)
  8。高阶函数之闭包
  闭包的定义?闭包本质上就是一个函数
  如何创建闭包?函数要嵌套(有内外部函数)内部函数使用外部函数的变量外部函数返回内部函数的名称
  如何使用闭包?典型的使用场景是装饰器的使用。
  global与nonlocal的区别:global可以改变全局变量,同时可以定义新的全局变量;nonlocal只能改变外层函数变量,不能定义新的外层函数变量,并且nonlocal也不能改变全局变量。global关键字可以用在任何地方,包括最上层函数中和嵌套函数中;nonlocal关键字只能用于嵌套函数中,并且外层函数中必须定义了相应的局部变量,否则会发生错误。
  简单的使用如下:1defoutFun(arg1):2definFun(arg2):3nonlocalarg1nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。4arg12005returnarg1arg26returninFun7infunoutFun(100)调用外部函数,传入参数,返回是内部函数8resultinfun(300)调用内部函数,传入参数9print(theresultis:,result)1011使用闭包求给function计算耗时(上面的内容已经提到)代码如下:12importtime13defwastetime(func):用于计算函数执行的耗时14deffunction(args,kwargs):15starttimetime。time()16resultfunc(args,kwargs)17endtimetime。time()18spendendtimestarttime19print(函数s总共耗时。3f秒:(func。name,spend))20returnresult21returnfunction
  9。高阶函数之偏函数
  偏函数主要辅助原函数,作用其实和原函数差不多,不同的是,我们要多次调用原函数的时候,有些参数,我们需要多次手动的去提供值。
  而偏函数便可简化这些操作,减少函数调用,主要是将一个或多个参数预先赋值,以便函数能用更少的参数进行调用。
  我们再来看一下偏函数的定义:
  类funcfunctools。partial(func,args,keywords)
  我们可以看到,partial一定接受三个参数,从之前的例子,我们也能大概知道这三个参数的作用。简单介绍下:func:需要被扩展的函数,返回的函数其实是一个类func的函数args:需要被固定的位置参数kwargs:需要被固定的关键字参数1defadd(args,kwargs):2forninargs:打印位置参数3print(n)4print(20)5fork,vinkwargs。items():打印关键字参数6print(s:s(k,v))78普通调用9add(1,2,3,v110,v220)1011偏函数调用12fromfunctoolsimportpartial13addfunpartial(add,100,k1200,k2300)14addfun(1,2,3,v110,v220)
  总结
  本文是对Python高阶函数相关知识的分享,主题内容总结如下:初识高阶函数高阶函数之map高阶函数之匿名函数高阶函数之reduce高阶函数之filter高阶函数之装饰器高阶函数之retrunfunction(返回函数)高阶函数之sorted排序函数高阶函数之闭包高阶函数之偏函数
投诉 评论 转载

台式机电源哪个牌子质量好且性价比高?台式电源哪个牌子质量好且性价比高?台式电脑电源生产厂家很多,凡是没有商标注册、认证的都不要买。电源的选择不仅仅是看功率,还要看品控、用料、转换率各方面两综合判断。这……中国移动发布最新一期智能硬件质量报告,涉及VRAR主流产品来源:中国电子报、电子信息产业网近日,中国移动智能硬件测试中心发布《中国移动2021年智能硬件质量报告(第二期)》(以下简称《报告》),本次评测涵盖VR和AR。在V……Golang入门到项目实战golang简介及安装golang简介Go(又称Golang)是Google的RobertGriesemer,RobPike及KenThompson开发的一种静态强类型、编译型语言。Go语言语……最近深圳的社保卡在医院不能用,都要自费,为什么?按照国家医疗保障局和广东省医疗保障局的统一部署,深圳市定于8月15日0:00停止深圳市社会医疗保险业务经办系统服务功能,进行系统切换,8月17日8:00正式启用国家平台。在系统……社交界的拼多多闷声发大财,陌陌2018年营收134亿,最增值谢谢您的问题。陌陌正在摆脱约的概念,向多元化转型发展,用户在增加,收入在增加。陌陌的月活跃人数在增加。陌陌的创始人唐岩是将陌陌定位于开放式社交,主要基于地理位置而交友。微……感情里最可怕的,不是出轨,不是穷你有没有过那种,很想家却又很抗拒回去的时候?我时常有这样的矛盾想法,想回家陪爸妈聊聊天,吃吃饭。可转念一想,每次回去,他们必定会有一场无休止的争吵,想到这画面,再想家的念……小度推出独立品牌添添,CEO景鲲宣称要和手机抢用户记者崔鹏编辑自去年从百度独立、拿到外部融资后,小度开始加速扩张。今年3月,小度推出针对教育行业的智能学习平板以及全屋智能解决方案。两个月后,小度正式发布旗下新……iPhone11苹果手机入门首选,没有之一很多朋友想从安卓转战iOS阵营,想入手一款入门iPhone,那么我最建议两年前的iPhone11。首先是价格,iPhone11目前价格在3500元左右,基本就是一款安卓中……599元的iPhone13,惨遭封杀戳我之前毫大大写过的一篇关于山寨iPhone13的文章,曝光了如今山寨机的现状。最近,造出599元iPhone13的酷比品牌,惨遭快手封杀,还登上了热搜,一时间山寨……国际清算银行发布多边央行数字货币桥项目第一阶段报告21世纪经济报道记者胡天姣边万莉北京报道近日,国际清算银行(BIS)与中国人民银行数字货币研究所、香港金融管理局、泰国央行以及阿联酋央行联合发布多边央行数字货币桥(mBridg……想换台新电脑,该不该买mac呢?mac的话有大概三个系列!台式一体机!便携mini机箱!还有便携笔记本!台式的话可以选择单独机箱和显示器的也可以选择一体机形式的!笔记本的话有两个系列Air的和Pro的!硬件配……一文读懂Python高阶函数高阶函数将函数作为参数传入,这样的函数称为高阶函数。函数式编程就是指这种高度抽象的编程范式。变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数……
小米MIX4发布!屏下摄像头首发骁龙888Plus,只要49美的造车生意经工信部公布第四十六批免购置税新能源车型奥迪保时捷等在列廖凯原特斯拉第三大个人股东,拿出6亿捐高校,却遭到无尽嘲讽华为nova9官宣搭载HarmonyOS,9月23日发布SABIC推出不畏湿热的新型NORYLGTX树脂颜值不俗火力全开爱国者K100压制噪音十三香实锤!消息称国行iPhone13全系降价新能源汽车和充电桩行业资讯2021。8。29期什么是Imtoken钱包从1599跌至1189,中端5G手机跌至二手价,骁龙778Gpython极简教程生成器和匿名函数

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利