python中函数与函数式编程(一)

版权声明:本文为博主原创文章,未经博主允许不得转载,博客地址:https://blog.csdn.net/weixin_43295278 https://blog.csdn.net/weixin_43295278/article/details/83144666

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

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\n')   # 写入一些内容


# 下面三个都是过程
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\n' %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, 好了,我只会这么多了。。。

猜你喜欢

转载自blog.csdn.net/weixin_43295278/article/details/83144666
今日推荐