首页
>
Python面向对象 > 1.1节: 先理解面向过程
- 已经是第一篇了
- 1.2节: 再理解面向对象
广州番禺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的值
上文的求解过程,就是一个典型的面向过程的解题思路,面向过程是把一个问题分解为若干个步骤,然后一步步地进行求解。
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学习资料
- 已经是第一篇了
- 1.2节: 再理解面向对象