初学 Python(十二)——高阶函数,,初学 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(十二)——高阶函数

评论关闭