网站换服务器要怎么做,网络营销课程总结范文,求网站备案照片,17素材网下载高阶函数将函数作为参数传入#xff0c;这样的函数称为高阶函数。函数式编程就是指这种高度抽象的编程范式。变量可以指向函数#xff0c;函数的参数能接收变量#xff0c;那么一个函数就可以接收另一个函数作为参数#xff0c;这种函数就称之为高阶函数。如下所示#xf…高阶函数将函数作为参数传入这样的函数称为高阶函数。函数式编程就是指这种高度抽象的编程范式。变量可以指向函数函数的参数能接收变量那么一个函数就可以接收另一个函数作为参数这种函数就称之为高阶函数。如下所示1 deffun0(x,y,fun):2 return fun(x)*fun(y)3 print(fun0(-9,-10,abs))1. 高阶函数之mapmap(fun, lst)将传入的函数变量func作用到lst变量的每个元素中并将结果组成新的列表返回。1 list1[0,1,2,3,4,5,6,7,8,9]23 list_result[]4 for i inlist1:5 list_result.append(i*i*i)6 print(list_result)78 def cube(x):#求立方9 return x*x*x10 print(list(map(cube,list1)))111213 list2[10,11,12,13,14,15,16,17,18,19]14 defmulti(x,y):15 return x*y1617 #map接收两个list可用于两个列表的对应索引数据进行操作18 print(list(map(multi,list1,list2)))2. 高阶函数之匿名函数定义一个匿名函数并调用定义格式如--lambda arg1,arg2…:表达式1 flambda x,y:xy2 print(f(10,20))34 #不需要显式地定义函数直接传入匿名函数更方便5 print(list(map(lambda x:x*x*x,list1)))3. 高阶函数之reducereduce把一个函数作用在一个序列[x1, x2, x3, …]上这个函数必须接收两个参数reduce把结果继续和序列的下一个元素做累积计算。1 from functools importreduce2 list1[1,3,5,7,9] #如何让列表里面的值变成一个数字13579输出3 deffun(x,y):4 return x*10y5 print(reduce(fun,list1))6 print(reduce(lambda x,y:x*10y,list1))#利用lambda来实现78 print(reduce(lambda x,y:xy,range(1,101)))#从12...99100的总和4. 高阶函数之filterfilter() 函数用于过滤序列过滤掉不符合条件的元素返回由符合条件元素组成的新列表。1 deffun2(x):2 return x%203 list2[1,2,3,4,5,6,7,8,9]4 print(list(filter(fun2,list2)))56 print(list(filter(fun2, range(1, 101))))#输出1到100的偶数7 print(list(filter(lambda x:x%20,list2)))#利用lambda来实现89 #获取非空字符串函数10 deffun3():11 list1 [tony, is, good, man, , hello, ]12 for el inlist1:13 if(el andel.strip()):14 print(el)15fun3()1617 #使用filter实现fun3的功能18 defis_not_null(str1):19 return str1 andstr1.strip()20 list3[tony,is,good,man, ,hello, ]21 print(list(filter(is_not_null,list3)))5. 高阶函数之装饰器1 importtime2 def waste_time(func): #用于计算函数执行的耗时3 def function(*args,**kwargs):4 start_timetime.time()5 resultfunc(*args,**kwargs)6 end_timetime.time()7 spendend_time-start_time8 print(函数%s 总共耗时%.3f秒:%(func.__name__,spend))9 returnresult10 returnfunction1112waste_time13 defabc():14 print(aaa)15abc()1617 def get_log(func): #能装饰的方法添加日志输出18 importtime19 def wrapper(*args, **kw):20 print(str(time.asctime())call %s(): % func.__name__)21 return func(*args, **kw)22 returnwrapper2324get_log25 defabd():26 print(bbb)27 abd()6. 高阶函数之 retrun function(返回函数)1waste_time2 def get_dict(**kwargs):3 defgetjson():4 jsons5 for key,value inkwargs.items():6 jsonskeystr(value)7 returnjsons8 returngetjson91011 print(get_dict(nametony,age33))12 fget_dict(nametony,age33)13 print(f())14 print(get_dict(nametony,age33)())7. 高阶函数之sorted排序函数1 num_list[34,55,2,3,444,500]2 print(sorted(num_list)) #默认升序3 print(sorted(num_list,reverseTrue)) #reverseTrue表示降序45 #对字符串ASCII A65 a97进行排序6 str_list[ac,aa,AB,d,c]7 print(sorted(str_list))8 print(sorted(str_list,reverseTrue))910 #用key来接收指定函数来进行自定义排序11 str_list[ac,aa,AB,d,c]12 print(sorted(str_list,keystr.lower)) #不考虑大小写1314 num_list[34,55,2,3,444,500,-599,-222]15 print(sorted(num_list,keyabs)) #用绝对值进行排序1617 classTester:18 def __init__(self,age,name):19 self.ageage20 self.namename2122 t1Tester(10,tony)23 t2Tester(20,jack)24 t3Tester(30,tom)2526 resultlist(sorted([t1,t2,t3],keylambda x:x.age)) #针对对象实例进行排序指定了年龄27 for test inresult:28 print(test.name,test.age)8. 高阶函数之闭包闭包的定义闭包本质上就是一个函数如何创建闭包函数要嵌套(有内外部函数)内部函数使用外部函数的变量外部函数返回内部函数的名称如何使用闭包典型的使用场景是装饰器的使用。global与nonlocal的区别global可以改变全局变量同时可以定义新的全局变量nonlocal只能改变外层函数变量不能定义新的外层函数变量并且nonlocal也不能改变全局变量。global关键字可以用在任何地方包括最上层函数中和嵌套函数中nonlocal关键字只能用于嵌套函数中并且外层函数中必须定义了相应的局部变量否则会发生错误。简单的使用如下1 defoutFun(arg1):2 definFun(arg2):3 nonlocal arg1#nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。4 arg12005 return arg1*arg26 returninFun7 infunoutFun(100)#调用外部函数传入参数返回是内部函数8 resultinfun(300)#调用内部函数传入参数9 print(the result is:,result)1011 #使用闭包求给function计算耗时(上面的内容已经提到)代码如下12 importtime13 def waste_time(func): #用于计算函数执行的耗时14 def function(*args,**kwargs):15 start_timetime.time()16 resultfunc(*args,**kwargs)17 end_timetime.time()18 spendend_time-start_time19 print(函数%s 总共耗时%.3f秒:%(func.__name__,spend))20 returnresult21 return function9. 高阶函数之偏函数偏函数主要辅助原函数作用其实和原函数差不多不同的是我们要多次调用原函数的时候有些参数我们需要多次手动的去提供值。而偏函数便可简化这些操作减少函数调用主要是将一个或多个参数预先赋值以便函数能用更少的参数进行调用。我们再来看一下偏函数的定义类func functools.partial(func, *args, **keywords)我们可以看到partial 一定接受三个参数从之前的例子我们也能大概知道这三个参数的作用。简单介绍下func: 需要被扩展的函数返回的函数其实是一个类 func 的函数*args: 需要被固定的位置参数**kwargs: 需要被固定的关键字参数1 def add(*args, **kwargs):2 for n in args:#打印位置参数3 print(n)4 print(-*20)5 for k, v in kwargs.items():#打印关键字参数6 print(%s:%s %(k, v))78 #普通调用9 add(1, 2, 3, v110, v220)1011 #偏函数调用12 from functools importpartial13 add_funpartial(add,100,k1200,k2300)14 add_fun(1, 2, 3, v110, v220)总结本文是对Python 高阶函数相关知识的分享主题内容总结如下初识高阶函数高阶函数之map高阶函数之匿名函数高阶函数之reduce高阶函数之filter高阶函数之装饰器高阶函数之 retrun function(返回函数)高阶函数之sorted排序函数高阶函数之闭包高阶函数之偏函数欢迎关注【无量测试之道】公众号回复【领取资源】,Python编程学习资源干货、PythonAppium框架APP的UI自动化、PythonSelenium框架Web的UI自动化、PythonUnittest框架API自动化、资源和代码 免费送啦~文章下方有公众号二维码可直接微信扫一扫关注即可。备注我的个人公众号已正式开通致力于测试技术的分享包含大数据测试、功能测试测试开发API接口自动化、测试运维、UI自动化测试等微信搜索公众号“无量测试之道”或扫描下方二维码添加关注让我们一起共同成长