zoukankan      html  css  js  c++  java
  • python函数式编程

    函数式编程:允许把函数本身作为参数传入另一个函数,还允许返回一个函数。

    1.高阶函数

    一个函数可以接收另一个函数作为参数,这种函数称为高阶函数

    def add(x,y,f):

          return f(x) + f(y)

    x = -5 、y = 6、  f = abs、  f(x) + f(y) = abs(-5) + abs(6) = 11

    return 11

    2.map/reduce

    map函数:接收两个参数,一个是函数,一个是可迭代对象。map的作用是将传入的函数依次作用到序列的每个元素,并将结果作为迭代器返回

    >>> def f(x):
    ...     return x * x
    ...
    >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> list(r)
    [1, 4, 9, 16, 25, 36, 49, 64, 81]

    reduce函数:接收两个参数,一个是函数,一个是可迭代对象。reduce的作用是将每一个元素的函数结果作用到下一个元素中

    reduce(f,[x1,x2,x3,x4]) = f(f(f(x1,x2),x3),x4)

    def prod(x,y):
          return x * y

    print(reduce(prod,[1,3,5]))   #15

    3.filter

    filter函数用于过滤序列,同样接收函数和可迭代对象,将函数作用于每一个元素中,然后进行筛选

    4.sorted

    排序函数可以直接比较两个元素的大小

    sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
    ['about', 'bob', 'Credit', 'Zoo']

    5.返回函数

    函数嵌套函数时,将内部函数作为结果进行返回。内部函数可以引用外部函数的参数和局部变量。这种方式称为闭包。

    返回函数不要引用任何循环变量,或者是变化的变量。函数的返回值不是立即执行,而是在调用之后才开始执行。若要使用循环变量,则需要再创建新的函数,将该变量作为参数传入。

    6.匿名函数

    lambda x : x * x   =    def f(x):

                                            return x * x

    也可以先将匿名函数赋值给变量,再调用该变量。

    7.装饰器

    在代码动态运行期间动态增加功能,被称为装饰器(就是用一个透明的大函数包裹起来,在程序运行时调用这个函数)

    #定义

    def log(func):

          def wrapper(*args,**kw):

                print('call %s():' % func.__name__)  #两横

                return func(* args,**kw)

          return wrapper

    @log                                  =                 now = log(now)

    def   now():

            print('2018-12-11')

    #调用

    now()

    #输出

    call  now():

    2018-12-11

    8.偏函数

    偏函数位于functools的模块中,名称为partial。作用为将一个函数的某些参数给固定住,返回一个新的函数,从而增强作用。

  • 相关阅读:
    bzoj 3744: Gty的妹子序列 主席树+分块
    bzoj 3110: [Zjoi2013]K大数查询 树状数组套线段树
    bzoj 3041: 水叮当的舞步 迭代加深搜索 && NOIP RP++
    约瑟夫问题例题小结
    bzoj 3594: [Scoi2014]方伯伯的玉米田 dp树状数组优化
    人生第一场CTF的解题报告(部分)
    ZOJ 3811 Untrusted Patrol【并查集】
    POJ 2112: Optimal Milking【二分,网络流】
    Codeforces Round #277 (Div. 2 Only)
    POJ 2195 Going Home【最小费用流 二分图最优匹配】
  • 原文地址:https://www.cnblogs.com/bkyf/p/10102953.html
Copyright © 2011-2022 走看看