美文网首页
【Python】-013-函数-函数式编程-1

【Python】-013-函数-函数式编程-1

作者: 9756a8680596 | 来源:发表于2017-08-03 00:45 被阅读1次

不同语言之间的共同特点

  • 不同点
    • 语法,运行环境和库的使用等
  • 相同点
    • 语言层面:编程方法和模式,那些场景适合什么方法和模式
    • 底层:数据结构(存储操作)和算法(对数据进行统计分析等)
    • 高层:各种应用需要的原理,机器学习,网络通信,爬虫

函数式编程,一切皆对象

  • 函数式编程关心数据的映射,命令式编程关心解决问题的步骤

  • 映射,一种东西和另一种东西之间的对应关系,也就是说一个函数的值仅决定于函数参数的值,不依赖其他状态

  • 把函数当做变量去操作,作为操作单元可直接赋给变量,有属性和方法,如同操作数据一样操作函数

      my_sum = sum
      sum([1,2,3])  //6
      my_sum([1,2,3])  //6
      sum.__name__  //'sum'
      my_sum.__name__  //'sum'
      sum.__call__  //决定了变量能否被调用<method-wrapper '__call__' of builtin_function_or_method object at 0x1002dad88>
      my_sum.__call__ //<method-wrapper '__call__' of builtin_function_or_method object at 0x1002dad88>
    
    //函数当做参数,函数f1的参数中包含另一个函数f,函数f1称为高阶函数
    //将之前语句中的列表解析和for循环对比,修改为高阶函数形式
    import time
    def listComph():
      return [(i, j, i+j) for i in range(100) for j in range(100) if i+j > i*j]
    def forLoop():
      a = []
      for i in ragne(100):
        for j in range(100):
          if i+j > i*j:
            a.append(i, j, i+j)
      return a
    def testTime(max_loop, func):
      min_time = 100000
      total_time = 0.0
      for loops in range(max_loop):
        start_time = time.clock()
        results = func()
        end_time = time.clock()
        run_time = end_time - start_time
        total_time = total_time + run_time
        if min_time > run_time:
          min_time = run_time 
      print 'The results is: ',results
      print 'The fastest loop time is: ',min_time
      print 'The avrage loop time is: ', (total_time)/max_loop
    
    if __name__ == "__main__":
      print "List:"
      testTime(500, listCom)
      print "ForLoop:"
      testTime(500, forLoop)
    
    //函数式的另一个例子,适用性更广泛
    // 分别求 f1(a,b,c,d) = (a+b)*c-d
    // 和 f2(a,b,c,d) = (a+b)*(c-d)
    //结构式写法
    def f1(a, b, c, d):
      return (a+b)*c-d
    def f2(a, b, c, d):
      return (a+b)*(c-d)
    //函数式写法,当需要扩展时,函数式优势明显,而过程式需要再写一个function
    def f_add(a, b):
      return a+b
    def f_sub(a, b):
      return a-b
    def f_mul(a, b):
      return a*b
    def g_cal(f, a, b):
      return f(a, b)
    a, b, c, d = 1, 2, 3, 4
    print "f1(a,b,c,d): ",f1(a,b,c,d)
    print "f2(a,b,c,d): ", f2(a,b,c,d)
    print  "(a+b)*c-d: ", g_cal(f_sub, g_cal(f_mul, f_add(1,2), 3), 4)
    print "(a+b)*(c-d): ", g_cal(f_mul, g_cal(f_add, 1, 2), g_cal(f_sub, 3, 4))
    

相关文章

  • 【Python】-013-函数-函数式编程-1

    不同语言之间的共同特点 不同点语法,运行环境和库的使用等 相同点语言层面:编程方法和模式,那些场景适合什么方法和模...

  • 高阶python 函数式编程

    高阶python 函数式编程 - 函数式 函数式编程(FunctionalProgramming) - 基于lam...

  • Python函数式编程指南

    注:采转归档,自己学习查询使用 Python函数式编程指南(1):概述Python函数式编程指南(2):函数Pyt...

  • Python进阶笔记

    文|Seraph 函数式编程 1 纯函数式编程:不需要变量、没有副作用、测试简单2 Python不是纯函数式编程(...

  • 【第十五天】函数式与并行运算

    第七章 函数式编程 7.1 1.Python中的函数式 函数式编程强调了函数的纯粹性(purity)一个纯函数是没...

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • Python进阶语法——函数式编程、模块,面向对象

    一、 Python进阶学习 一、函数式编程 1.1函数式编程 1.2高阶函数 1.2.1 import mathd...

  • Python高阶函数

    本篇将介绍Python的函数式编程,介绍高阶函数的原理,更多内容请参考:Python学习指南 函数式编程 函数是P...

  • 向量化

    python向量化本身做得不是很好需要借助函数式编程或者列表推导式实现 1 列表推导式 2 函数式编程

  • Python函数式编程

    虽然 Python 不是函数式编程语言(是命令式编程语言),但是支持许多有价值的函数式编程工具。Python 提供...

网友评论

      本文标题:【Python】-013-函数-函数式编程-1

      本文链接:https://www.haomeiwen.com/subject/csqklxtx.html