Python面向对象
首页 > Python面向对象 > 1.1节: 先理解面向过程

1.1节: 先理解面向过程

薯条老师 2020-05-27 07:43:59 325180 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

1.1.1 理解面向过程

在讲解面向过程的基础概念之前,薯条老师先给同学们出一道非常简单的数学题:

求解算数表达式1+2*3-4*5的值

该怎么求解这个算术表达式?很简单,因为乘法的优先级高于加减法,所以我们先计算表达式2*3以及4*5的值,这是第一步。2*3的结果为6,4*5的结果为20,完成第一步以后,表达式变为:
1+6-20

加法与减法的优先级是相同的,那么无论先计算加法还是减法,最终得到的都是相同的结果。我们现在按从左到右的顺序来计算表达式的值,先计算1+6,这是第二步。1+6的结果为7,完成第二步以后,表达式变为:
7-20

在最后一步中,我们计算表达式7-20的值,最终的结果为:
-13

在解题过程中,我们将表达式1+2*3-4*5分解为了三个步骤:
(1) 计算表达式2*3以及4*5的值
(2) 计算表达式1+6的值
(3) 计算表达式7-20的值

上文的求解过程,就是一个典型的面向过程的解题思路,面向过程是把一个问题分解为若干个步骤,然后一步步地进行求解。

image.png

1.1.2 编程语言中的面向过程

编程语言中的面向过程是一种程序设计方法,以过程为中心来进行编程。与面向过程相对的是面向对象,面向过程侧重于找出解决问题的过程、步骤,而面向对象将问题本身视为一个整体。

关于面向对象的基础概念,将会在下节中进行详细讲解。

现在我们根据面向过程的程序设计思想,将表达式1+2*3-4*5的计算过程,使用Python程序进行实现。现在请同学们按照下面的步骤进行操作,在进行实操的同时,需好好理解面向过程的基础概念:

(1) 创建procedure-oriented.py
在D盘的Python3-Learning目录中创建chapter16目录,然后在chapter16目录中创建procedure-oriented.py。创建成功以后,在procedure-oriented.py中输入以下代码:

# __author__ = 薯条老师
 
# 定义multi函数,用来实现乘法运算
def multi(left, right):
    """ left表示乘法运算中的左操作数,right表示右操作数 """
    return left * right
 
 
# 定义add函数,用来实现加法运算
def  add(left, right):
    """ left表示加法运算中的左操作数,right表示右操作数 """ 
    return left + right
 

# 定义sub函数,用来实现减法运算
def  sub(left, right):
    """ left表示减法运算中的左操作数,right表示右操作数 """ 
    return left - right
 
 
if __name__ == "__main__":
  # 先计算表达式2*3以及4*5的值
  left = multi(2,3)  
  right = multi(4, 5)
 
  # 再进行减法运算
  value = sub(left, right)
 
  # 最后进行加法运算
  result = add(1, value)
  print(result)
(2) 在IDE或命令行中执行procedure-oriented.py
同学们可以用PyCharm来打开procedure-oriented.py。打开以后点击窗口中的运行菜单,就可以执行脚本procedure-oriented.py。脚本执行成功后,可以看到程序的输出为:
-13

也可以在命令行中执行procedure-oriented.py。进入windows命令行,切换到D盘中的Python3-Learning/chapter16目录。切换成功以后,直接在命令行中执行 python procedure-oriented.py,执行成功以后,可以看到程序的输出为:
-13

1.1.3 面向过程的优点与不足

继续以上文中的算数表达式为例,在面向过程的方法中,会将该表达式的解题过程分解为若干步骤,每个步骤对应一个模块,这里的模块通常表现为函数的形式。例如求解算术表达式1+2*3-4*5,可以分解为以下几个模块:

(1) 加法计算的模块
(2) 减法计算的模块
(3) 乘法计算的模块

这样在按步骤按序进行求解时,只需把参数传递给相应的模块就行了。

(1)计算表达式2*3,将操作数传递给乘法计算模块
(2)计算表达式4*5,将操作数传递给乘法计算模块
(3)将第一步中的结果6与第二步中的20作为参数传递给减法计算模块
(4)最后将1与第三步中的计算结果-14传递给加法计算模块

从问题的求解过程来进行分析,不难得出面向过程方法的一些优点:
(1) 以步骤的形式来分析问题,符合人的思考方式,无需考虑复杂的抽象概念
(2) 将问题求解分解为若干步骤,程序的流程清晰,易于实现
(3) 软件的规模不是很大时,以面向过程的方式来进行项目开发,会更加高效。

另外,在程序性能方面,面向过程也会有较大的优势,相比于面向对象设计,面向过程没有对象的实例化过程以及可能存在的过度封装、代码膨胀等问题。面向过程设计方法主要的不足在于程序的复用性和可扩展性。因为面向过程是将问题的解决过程分解为多个步骤来进行设计的,一旦业务逻辑发生改变,那么与之相关的步骤也需要重新设计,业务与过程紧密耦合。尤其当软件的规模到达一定程度时,这样的问题会更加突出,面向对象设计很好地解决了这类问题。

1.1.4 知识要点

(1) 面向过程是以过程为中心,把一个问题分解为若干个步骤,然后一步步地进行求解。
(2) 面向过程符合人的思考方式,无需考虑复杂的抽象概念,将问题求解分解为若干步骤,程序的流程清晰,易于实现。软件的规模不是很大时,以面向过程的方式来进行项目开发,会更加高效。

1.1.5 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料

关注微信公众号.jpg












欢迎 发表评论: