初学 Python——高阶函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学 Python——高阶函数相关的知识,希望对你有一定的参考价值。
初学 Python(十二)——高阶函数
初学 Python,主要整理一些学习到的知识点,这次是高阶函数。
#-*- coding:utf-8 -*- ‘‘‘‘‘ 话说高阶函数: 能用函数作为参数的函数 称为高阶函数 ‘‘‘ #函数作参 def f(x): return x*x #map函数为内置函数,意思为将第二个参数的list作用到f函数中 #最后的结果为一个list print map(f,[1,2,3,4,5]) #reduce函数为内置函数,意思将第二参数的序列作用到add函数值 #将结果做累加计算,最后的结果为一个数 def add(x,y): return x+y print reduce(add,[1,2,3,4,5,6]) #给出一个整数的每个位置上的数,得到该整数 def fn(x,y): return x*10+y print reduce(fn,[1,2,3,4,5]) #字符串转int print reduce(fn,map(int,‘12345‘)) def str2int(s): def fn(x,y): return x*10+y return reduce(fn,map(int,s)) print str2int(‘123456‘) ‘‘‘‘‘ 上面函数的调用步骤是: 1.得到reduce(fn,map(int,‘123456‘)) 2.得到reduce(fn,[1,2,3,4,5,6]) 3.得到reduce(x*10+y,[1,2,3,4,5,6]) 4.得到123456 ‘‘‘ def str2int2(s): return reduce(lambda x,y:x*10+y,map(int,s)) print str2int2(‘1234567‘) #排序 print sorted(‘313568‘) print sorted((1,8,4,2,5)) print sorted([9,8,7,6,5,4,3]) print sorted([‘name‘,‘Age‘,‘Sex‘,‘address‘]) #sorted也是一个高阶函数,所以它也可以传函数来改变排序的算法 #倒序 def inverted_order(x,y): if x>y: return -1 elif x<y: return 1 else: return 0 print sorted((1,8,4,2,5),inverted_order) #改变字符串排序算法 #上面字符串排序是根据ascii码来判断大小 #由于大写字母都比小写字母的ascii码小, #但是一般我们都是按照字母表的顺序排列 #下面来变换一下算法,忽略大小写 def alphabet(s1,s2): l1 = s1.lower() l2 = s2.lower() if l1 < l2: return -1 elif l2 < l1: return 1 else: return 0 print sorted([‘name‘,‘Age‘,‘Sex‘,‘address‘],alphabet) ‘‘‘‘‘ 函数作为返回值 其实刚才在将字符串转int时就涉及到了 这种将函数作为返回值的形式 ‘‘‘ def sum(*args): sum = 0 for n in args: sum+=n return sum print sum(1,2,3,4,5) #改装成返回函数的形式 def sum_pack(*args): def sum(): sum1 = 0 for n in args: sum1+=n return sum1 return sum g = sum_pack(1,2,3,4,5) print g #<function sum at 0x0134C0F0> #g输出为函数,想打印结果要调用函数 print g() ‘‘‘‘‘ 闭包的定义: 字函数自动获取父函数的变量和参数 进入我的地盘就是我的 而且每一次调用返回的函数 都不是同一个对象 ‘‘‘ g1 = sum_pack(1,2,3,4,5) g2 = sum_pack(1,2,3,4,5) print g1==g2
以上是关于初学 Python——高阶函数的主要内容,如果未能解决你的问题,请参考以下文章