模块化程序设计理念
- 模块和包概念的进化
“量变引起质变”、“物以类聚”是进化发展的核心哲学思想; (1).Python程序由模块组成。一个模块对应python源文件,一般后缀名是:.py。 (2).模块由语句组成。运行Python程序时,按照模块中语句的顺序依次执行。 (3).语句是Python程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。
模块化编程由如下几个重要优势: (1).便于将一个任务分解成多个模块,实现团队协同开发,完成大规模程序。 (2).实现代码复用。一个模块实现后,可以被反复调用。 (3).可维护性增强。
- 模块化编程的流程:
(1).设计API,进行功能描述; (2).编码实现API中描述的功能; (3).在模块中编写测试代码,并消除全局代码; (4).使用私有函数实现不被外部客户调用的模块函数。
- 模块的导入
import语句导入: import语句的基本语法格式: import 模块名 import 模块1,模块2… import 模块名 as 模块别名
import本质上是使用了内置函数__import__(). 通过import导入一个模块时,python解释器进行执行,最终会生成一个对象,这个对象就代表可被加载的模块。
from…import导入 Python中可以使用from…import导入模块中的成员。语法格式如下: from 模块名 import 成员1,成员2,…
如果希望导入一个模块中所有的成员,则可以采用如下结构: from 模块名 import *
import()动态导入 import语句本质上就是调用内置函数__import__(),可以通过其实现动态导入。给__import__()动态传递不同的参数值,就能导入不同的模块。
模块的加载问题
当导入一个模块时,模块中的代码都会被执行。不过,如果再次导入这个模块,则不会再次执行。 一个模块无论导入多少次,这个模块在整个解释器进程内有且仅有一个实例对象。
- 包(package)的概念和结构
当一个项目有很多模块时,需要在进行组织。将功能类似的模块放到一起,形成类“包”。本质上,“包”就是一个必须有__init__.py文件的文件夹。 包下面可以包含“模块”,也可以在包含“子包”。 在pycharm中可以通过:New–>Python package创建。
init.py的三个核心作用: 1.作为包的标识,不能删除; 2.用来实现模糊导入; 3.导入包实质是执行__init__.py文件,可以在__init__.py文件中做包的初始化、以及需要统一执行的代码、批量导入。
包内引用: 如果是子包内的引用,可以按照相对应位置引入子模块,以aa包下module_AA中导入a包下列内容为例: sys.path和模块搜索路径
导入模块时,Python解释器按照如下路径寻找模块文件: (1).内置模块;(2).当前目录;(3).程序的主目录;(4).pythonpath目录(如果已经设置了pythonpath环境变量);(5).标准链接库目录;(6).第三方库目录(site-packages目录);(7). .pth文件的内容(如果存在的话);(8).sys.path.append()临时添加的目录。
|