众所周知,模块化编程具有不少优势,尤为在复杂项目上体现更为明显。Python模块化编程有助于开发者统筹兼顾和分工协做,并提高代码灵活性和可维护性,是编程开发者不可或缺的一项重要工具。web
在平时Python编程中,咱们所保存的以.py为后缀的代码文件(如hello.py),称为源文件(source file)。开始学习Python编程时,咱们一般将项目全部代码放在一个源文件中进行编译实现,可是随着深刻学习和项目变得复杂起来时,这种方法将没法知足你快速找到你定义的函数(functions)或类(classes)的具体位置,这时模块化编程思想就有了用武之地。数据库
咱们能够建立一个Python模块(如module.py),其中module称为模块的名称。固然,Python模块在本质上就是一个源文件(source file),一样是以.py做为后缀保存。Python模块一般包含的是项目须要实现的某个或某几个功能的源代码(source code),当你的项目须要实现包含在此模块中的功能时,运用import module则可导入此模块到项目中。编程
Python包就是把多个Python模块集合到一块儿而造成的一个目录(directory),以下图所示。后端
上图所示定义了一个名为animals的Python包,包含了5个Python模块:cat, cow, dog, horse, sheep。此外,还包含了一个名为_init_.py的特殊文件,咱们一般称此文件为包初始化文件(package initialization file)。_init_.py文件做用以下:1)告知Python system此目录中包含有一个Python包;2)初始化该Python包;3)使导入该Python包时更容易。模块化
【注】:Python3.3版本之后,Python包中并不是必需要包含初始化文件(此类包称之为命名空间包(namespace package)),但习惯上仍然选择包含初始化文件(此类包称之为常规包(regular package))。函数
调用Python包中模块和前面相似,如import animals.cat。工具
建立Python包能够更好地组织协调复杂项目,可以将有关联的Python模块进行集中,甚至可以在Python包中继续定义Python包(称为嵌套包(nested packages))。学习
Python模块和包的应用不只仅能将你项目的所有代码划分到各个模块和包中,并且它可以反映出项目的逻辑结构。例如,当你须要建立一个网页应用用来存储和报告考试成绩,则能够将这个项目划分为两个主要部分:1)网页接口,用来与用户交互使用;2)后端,操做数据库存储信息的内部逻辑并产生报告结果。以下图所示:优化
对于网页接口,可由如下四个模块构成:spa
对于后端,可由如下三个模块构成:
对于整个项目,能够划分为两个主要的Python包,分别命名为:web和backend,
虽然上述内容是一个虚构项目(与实际网页应用开发有别),但它很好的展现了模块化编程的思想,把整个项目划分红了独立的模块和包,有助于咱们对模块化编程的理解。
模块化编程的应用,有利于咱们管理项目中须要变动或重建的模块,无需过多修改项目代码,提高项目的可维护性和灵活性;有利于提高咱们编程的效率,避免重复造车轮的尴尬;有利于优化咱们的项目代码结构,彰显项目的逻辑性。
本文章属于原创做品,欢迎你们转载分享,禁止修改文章的内容。尊重原创,转载请注明来自:躬耕南阳 https://www.cnblogs.com/yangmi511/