Python16返回函数、装饰器、偏函数

# 函数式编程下

  • 函数作为返回值:高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。
    • 实例:
      ```
      def return_sum_args(*args):
      def sum_args():
      sum = 0
      for i in args:
      sum += i
      return sum
      return sum_args

      # 调用函数return_sum_args
      a = return_sum_args(1,2,3,4,5,6) # 返回的是函数 sum
      print(type(a))
      print(a()) # 等同于调用sum函数
      ```
    • 运行结果:
      mo9jTe.png
    • 注意:每次调用都会返回一个新的函数,即使传入相同的参数:结果也不受影响
  • 闭包:注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
  • 匿名函数:关键字 lambda
    • 语法: lambda 参数:返回值 == lambda x : x * x
    • 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
    • 匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
    • sum_func = lambda x,y : x + y
    • 调用:print(sum_func(1,2))
  • 装饰器:在代码运行期间动态增加功能的方式
    • 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。
    • __name__属性:函数名.__name__ 返回函数名字
    • 实例:
      # __name__,获取函数名称 def demo(): return '2019.8.27' f = demo print(demo.__name__) print(f.__name__)
  • 偏函数:简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单
    • 实例:
      import functools.partial int2 = functools.partial(int,base=2) # 返回二进制的数据 print(int2('1111')) # 注意到上面的新的int2函数,仅仅是把base参数重新设定默认值为2,但也可以在函数调用时传入其他值:

猜你喜欢

转载自www.cnblogs.com/thloveyl/p/11421242.html