zoukankan      html  css  js  c++  java
  • python中函数与函数式编程(一)

    在学习之前,我们先去区分面对对象、面对过程、函数式编程他们之间的区别,从改图可以看出,他们之间不是完全相同的,也不是没有任何相同点的
    在这里插入图片描述

    1.函数和过程的基本认识

    def func1():
        """testing1"""
        print('in the func1')
        return 0       # 这是一个函数
    
    def func2():
        """testing2"""
        print('in the func2')    # 这是一个过程
    
    x = func1()
    y = func2()
    
    # 说白了,过程就是没有返回值的函数而已
    
    print('from func1 return is %s' %x)  # 注意这边的通配符的是使用方法
    print('from func1 return is %s' %y)
    

    在这里插入图片描述
    ps:此处一定要多看注释,注意区分好函数与过程之间的关系:过程没有返回值,函数有返回值,所以说白了,过程就是没有返回值的函数而已

    2.函数的特性

    (1)减少重复代码
    (2)使程序变的可扩展
    (3)使程序变得易维护

    # 函数   有一段可以复用的程序,一定要定义成函数,简洁
    def logger():
        with open('a.txt','a+') as f: # 打开文件,以二进制追加的方式,没有的话就创建
            f.write('end action
    ')   # 写入一些内容
    
    
    # 下面三个都是过程
    def test1():
        print('test1 starting action...')
    
        logger()  # 调用logger()函数
    
    def test2():
        print('test2 starting action...')
    
        logger()   # 调用logger()函数
    
    def test3():
        print('test3 starting action...')
    
        logger()   # 调用logger()函数
    

    3.导入time模块

    第三部分主要是导入了time模块,其余和2一样。

    import time
    def logger():
        time_format = '%y-%m-%d %x'
        time_current = time.strftime(time_format)
        with open('a.txt','a+') as f:
            f.write('%s end action
    ' %time_current)
    
    
    # 下面三个都是过程
    def test1():
        print('test1 starting action...')
    
        logger()  # 调用logger()函数
    
    def test2():
        print('test2 starting action...')
    
        logger()   # 调用logger()函数
    
    def test3():
        print('test3 starting action...')
    
        logger()  # 调用logger()函数
    

    导入了时间模块,注意时间模块的使用方法,并在结果中显示出来时间
    在这里插入图片描述

    函数式编程简单介绍(与python关系不大)

    概念:函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。

    Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

    举例来说:

      (1 + 2) * 3 - 4
    

    传统的过程式编程,可能这样写:

      var a = 1 + 2;
    
      var b = a * 3;
    
      var c = b - 4;
    

    函数式编程要求使用函数,我们可以把运算过程定义为不同的函数,然后写成下面这样:

      var result = subtract(multiply(add(1,2), 3), 4);
    

    这段代码再演进以下,可以变成这样:

    add(1,2).multiply(3).subtract(4)
    

    这基本就是自然语言的表达了。再看下面的代码,大家应该一眼就能明白它的意思吧:

    merge([1,2],[3,4]).sort().search("2")
    

    因此,函数式编程的代码更容易理解。

    要想学好函数式编程,不要玩py,玩Erlang,Haskell, 好了,我只会这么多了。。。

    本人目前在学习python、前端、数据库和linux相关的内容,故打算写一些学习笔记,包括安装软件遇到的一些问题、编程语言的学习。 学习如逆水行舟,你在原地踏步的同时,别人一直在前进!
  • 相关阅读:
    暴力程序之回文子串
    关于取消同步带来问题的样例
    JavaScript之Date
    JavaScript之array
    智破连环阵
    超长数字串
    无向图最短路径
    扫雷
    n!最末尾非0数
    计算程序运行时间
  • 原文地址:https://www.cnblogs.com/souhaite/p/10585611.html
Copyright © 2011-2022 走看看