Python 作为一门同时支持面向过程编程、面向对象编程和函数式编程的高级语言,让程序员可以灵活地选择适合自己的编程范式。又由于其范式过于丰富,可以搭配出许多不同的书写和排版方式,但我们需要的是利于理解维护的。通常,我们可以把代码分为面向过程编程面向对象编程函数式编程三种范式,依照范式对 Python 代码进行模块化的构思、书写和排版。


一、面向过程编程

面向过程编程将 过程 (一个个步骤或功能)视为程序的 要素 。在“Tyex通过地铁闸机”例子中,面向过程编程正如:

1
2
3
4
Tyex拍卡()
闸机开了()
Tyex通过()
闸机关上()

这种编程方式的特点是:过程直观,以过程为单位维护,适用于 小型项目

进行面向过程编程时,我们可以针对过程对代码进行 模块化 ,排版形如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 声明过程1
def process_1():
# 过程1的内容
pass

# 声明过程2
def process_2():
# 过程2的内容
pass

# 声明其它过程

# 主函数
if __name__ == '__main__':
process_1() # 调用过程1
process_2() # 调用过程2
# 调用其它过程
pass

在这段面向过程编程的代码中,我们先声明各个过程,然后在主函数中依次调用各个过程。

二、面向对象编程

面向对象编程将 对象 视为程序的 要素 。在“Tyex通过地铁闸机”例子中,面向对象编程正如:

1
2
3
4
Tyex.拍卡()
闸机.开门()
Tyex.通过()
闸机.关门()

这种编程方式的特点是:利于管理对象的状态和行为,以类为单位维护,适用于 大型项目

进行面向对象编程时,我们可以针对类对代码进行 模块化 ,排版形如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 声明类1
class MyClass1:
# 声明初始化方法
def __init__(self, *args, **kwargs):
# 将参数的表达式赋值给类1的属性

# 声明方法1
def method1(self, *args, **kwargs):
# 方法1的内容

# 声明方法2
def method2(self, *args, **kwargs):
# 方法2的内容

# 声明其它方法
pass

# 声明类2
class MyClass2:
# 仿照类1,声明类2的方法
pass

# 声明其它类
# 可以通过类的继承和多态,实现代码的复用

# 主函数
if __name__ == '__main__':
obj1 = MyClass1(*args, **kwargs) # 创建对象1(方法1的实例化)
obj1.method1(*args, **kwargs) # 调用对象1的方法

obj2 = MyClass2(*args, **kwargs) # 创建对象2(方法2的实例化)
obj2.method2(*args, **kwargs) # 调用对象2的方法

# 创建其它对象及调用其它方法
# 也可以先完成多次实例化再按需调用方法
pass

在这段面向对象编程的代码中,我们先定义各个类,然后在主函数中创建对象并调用其方法。

三、函数式编程

函数式编程将 函数 视为程序的 要素 。在“Tyex通过地铁闸机”例子中,函数式编程正如:

1
2
3
开门的闸机 = 开门(拍卡)
通过的人 = 通过(开门的闸机)
关门的闸机 = 关门(通过的人)

这种编程方式的特点是:强调使用函数处理数据,避免使用可变数据和副作用,适用于 数据分析

进行函数式编程时,我们可以针对函数对代码进行 模块化 ,排版形如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 定义函数1
def func_1(*args, **kwargs):
# 函数1的内容
# return 结果
pass

# 定义函数2
def func_2(*args, **kwargs):
# 函数2的内容
# return 结果
pass

# 定义其它函数

# 定义匿名函数
# lambda_func = lambda *args, **kwargs: 表达式

# 定义高阶函数
def higher_order_func(func, *args, **kwargs):
# 高阶函数的内容
# return 结果
pass

# 定义其它高阶函数

# 主函数
if __name__ == '__main__':
# 载入数据
# 调用函数1、2等
# 调用匿名函数
# 调用高阶函数
# 调用其它高阶函数
# 输出结果
pass

在这段函数式编程的代码中,我们先定义各个函数,然后在主函数中载入数据后调用函数。


以上内容就是对 Python 的三种编程范式的介绍。当我们做小型项目时,可以选择面向过程编程;当我们做大型项目时,可以选择面向对象编程;当我们需要做数据分析时,可以选择函数式编程。总之,选择适合自己的编程范式,就是让构思、书写和维护代码更加简单、高效。