11 模块和包概念
Python程序由模块组成。一个模块对应 python源文件,一般后缀名是:py。
模块由语句组成。运行 Python 程序时,按照模块中语句的顺序依次执行。
语句是Python程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。
12 标准库模块(standard library)
与函数类似,模块也分为标准库模块和用户自定义模块。 Python标准库提供了 *** 作系统功能、网络通信、文本处理、文件处理、数学运算等基 本的功能。比如: random(随机数)、math(数学运算)、 time(时间处理)、 file(文件处理)、 os(和 *** 作系统交互)、sys(和解释器交互)等。
另外,Python还提供了海量的第三方模块,使用方式和标准库类似。功能覆盖了能想象到的所有领域,比如:科学计算、WEB开发、大数据、人工智能、图形系统等。
13 为什么需要模块化编程
模块(module)对应于Python源代码文件(py文件)。模块中可以定义变量、函数、 类、普通语句。 这样,我们可以将一个 Python程序分解成多个模块,便于后期的重 复应用。
模块化编程(Modular Programming)将一个任务分解成多个模块。每个模块就像一个积木一样,便于后期的反复使用、反复搭建。
模块化编程有如下几个重要优势:
便于将一个任务分解成多个模块,实现团队协同开发,完成大规模程序
实现代码复用。一个模块实现后,可以被反复调用。
可维护性增强。
14 模块化编程的流程
模块化编程的一般流程:
设计API,进行功能描述。
编码实现API中描述的功能。
在模块中编写测试代码,并消除全局代码。
使用私有函数实现不被外部客户端调用的模块函数。
15 模块的API和功能描述要点
API(Application Programming Interface 应用程序编程接口)是用于描述模 块中提供的函数和类的功能描述和使用方式描述。
模块化编程中,首先设计的就是模块的API(即要实现的功能描述),然后开始编 码实现API中描述的功能。最后,在其他模块中导入本模块进行调用。
通过help(模块名)查看模块的API。 一般使用时先导入模块 然后通过help函数查看。
PyCharm提供了性能分析工具Run-》Profile,如下图所示。利用Profile工具可以对代码进行性能分析,找出瓶颈所在。
测试:
下面以一段测试代码来说明如何使用pycharm的Profile功能。
测试代码见下文,文件命名为Testpy, 一共有5个函数,每个函数都调用了timesleep进行延时,其中fun5函数调用了fun4函数:
import time
def fun1(a, b):
print('fun1')
print(a, b)
timesleep(1)
def fun2():
print('fun2')
timesleep(1)
def fun3():
print('fun3')
timesleep(2)
def fun4():
print('fun4')
timesleep(1)
def fun5():
print('fun5')
timesleep(1)
fun4()
fun1('foo', 'bar')
fun2()
fun3()
fun5()
点击Run-》Profile开始测试,代码运行结束后会生成一栏测试结果,测试结果由两部分构成,Statistcs(性能统计)和Call Graph(调用关系图):
Statistcs(性能统计):
性能统计界面由Name、Call Count、Time(ms)、Own Time(ms) 4列组成一个表格,见下图。
1 表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒(ms)。
2点击表头上的小三角可以升序或降序排列表格。
3在Name这一个列中双击某一行可以跳转到对应的代码。
4以fun4这一行举例:fun4被调用了一次,运行时间为1000ms,占整个运行时间的167%
Call Graph(调用关系图):
Call Graph(调用关系图)界面直观展示了各函数直接的调用关系、运行时间和时间百分比,见下图。
0右上角的4个按钮表示放大、缩小、真实大小、合适大小;
1箭头表示调用关系,由调用者指向被调用者;
2矩形的左上角显示模块或者函数的名称,右上角显示被调用的次数;
3矩形中间显示运行时间和时间百分比;
4矩形的颜色表示运行时间或者时间百分比大小的趋势:红色 > 黄绿色 > 绿色,由图可以看出fun3的矩形为黄绿色,fun1为绿色,所有fun3运行时间比fun1长。
5从图中可以看出Testpy直接调用了fun3、fun1、fun2和fun5函数;fun5函数直接调用了fun4函数;fun1、fun2、fun3、fun4和fun5都直接调用了print以及sleep函数;整个测试代码运行的总时间为6006ms,其中fun3的运行时间为1999ms,所占的时间百分比为333%,也就是 1999ms / 6006ms = 333%。
1、我们需要对我们的编辑器进行打开,然后找一个我们要设置断点的代码,在代码中设置断点的话,就直接点击那段代码,再点击它所在的行号。
2、选中代码之后,点击菜单栏中的“run”选项。
3、在“run”的下拉菜单中我们找到“Toggle Line Breakpoint”,点击它之后,我们可以发现在我们选择的那行代码的前面就已经添加了一个断点,此时它的行号位置会有一个红色的圆点进行显示。
4、还有一种方法可以对断点进行设置,就是利用鼠标双击想添加断电代码的行号。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)