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\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, 好了,我只会这么多了。。。
本人目前在学习python、前端、数据库和linux相关的内容,故打算写一些学习笔记,包括安装软件遇到的一些问题、编程语言的学习。 学习如逆水行舟,你在原地踏步的同时,别人一直在前进!