1 引言

众所周知,模块化编程具备很多优点,尤其在复杂项目上体现更为明显。Python模块化编程有助于开发者统筹兼顾和分工协作,并提升代码灵活性和可维护性,是编程开发者不可或缺的一项重要工具。

2 Python模块

在平时Python编程中,我们所保存的以.py为后缀的代码文件(如hello.py),称为源文件(source file)。开始学习Python编程时,我们通常将项目所有代码放在一个源文件中进行编译实现,但是随着深入学习和项目变得复杂起来时,这种方法将无法满足你快速找到你定义的函数(functions)或类(classes)的具体位置,这时模块化编程思想就有了用武之地。

我们可以创建一个Python模块(如module.py),其中module称为模块的名称。当然,Python模块在本质上就是一个源文件(source file),同样是以.py作为后缀保存。Python模块通常包含的是项目需要实现的某个或某几个功能的源代码(source code),当你的项目需要实现包含在此模块中的功能时,运用import module则可导入此模块到项目中。

3 Python包

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))。

4 运用Python模块和包来组织一个项目

Python模块和包的应用不仅仅能将你项目的全部代码划分到各个模块和包中,而且它能够反映出项目的逻辑结构。例如,当你需要创建一个网页应用用来存储和报告考试成绩,则可以将这个项目划分为两个主要部分:1)网页接口,用来与用户交互使用;2)后端,操作数据库存储信息的内部逻辑并产生报告结果。如下图所示:

对于网页接口,可由以下四个模块构成:

  • 提供用户验证部分,包括注册、登录、登出;
  • 提供浏览和录入考试成绩网页接口;
  • 提供生成成绩报告单网页接口。
  • 提供API,允许其它系统根据需求获取考试成绩结果。

对于后端,可由以下三个模块构成:

  • 数据库;
  • 成绩报告单生成器;
  • 邮件发送成绩报告单。

对于整个项目,可以划分为两个主要的Python包,分别命名为:web和backend,

  • web package(包含网页接口四个模块);
  • backend package(包含后端三个模块)。

虽然上述内容是一个虚构项目(与实际网页应用开发有别),但它很好的展示了模块化编程的思想,把整个项目划分成了独立的模块和包,有助于我们对模块化编程的理解。

5 小结

模块化编程的应用,有利于我们管理项目中需要变更或重建的模块,无需过多修改项目代码,提升项目的可维护性和灵活性;有利于提升我们编程的效率,避免重复造车轮的尴尬;有利于优化我们的项目代码结构,彰显项目的逻辑性。

未完待续……

本文章属于原创作品,欢迎大家转载分享,禁止修改文章的内容。尊重原创,转载请注明来自:躬耕南阳  https://www.cnblogs.com/yangmi511/

(一)Python模块化编程简介的更多相关文章

  1. Python模块化编程与装饰器

    Python的模块化编程 我们首先以一个例子来介绍模块化编程的应用场景,有这样一个名为requirements.py的python3文件,其中两个函数的作用是分别以不同的顺序来打印一个字符串: # r ...

  2. PYTHON SOCKET编程简介

    原文地址: PYTHON SOCKET编程详细介绍   Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 Soc ...

  3. Python函数式编程简介

    参考原文 廖雪峰Python函数式编程 函数 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程 ...

  4. python学习之路-第七天-python面向对象编程简介

    面向对象编程 在python中,同样是类和对象作为重要的组成部分. 而且在python中基本数据类型如int都是有封装类的,都有自己的方法,应该是和java里面的Integer类似吧 类包括域和方法: ...

  5. Python模块化编程

    目录 模块化 自定义模块 模块的内置属性 导入模块 安装第三方模块 查看模块的属性和方法 模块化 在Python中,一个.py文件就称之为一个模块(Module),为了避免模块名冲突,Python又引 ...

  6. Python 面向对象编程详解

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  7. 爬虫逆向基础,理解 JavaScript 模块化编程 webpack

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 简介 在分析一些站点的 JavaScript 代码时,比较简单的代码,函数通常都是一个一个的,例 ...

  8. 【python游戏编程之旅】第七篇---pygame中的冲突检测技术

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中的Sprite模块和如何加载动画:http://www.cnblogs ...

  9. Python核心编程-描述符

    python中,什么描述符.描述符就是实现了"__get__"."__set__"或"__delete__" 方法中至少一个的对象.什么是非 ...

随机推荐

  1. 《Java 8 in Action》Chapter 12:新的日期和时间API

    在Java 1.0中,对日期和时间的支持只能依赖java.util.Date类.同时这个类还有两个很大的缺点:年份的起始选择是1900年,月份的起始从0开始. 在Java 1.1中,Date类中的很多 ...

  2. a链接四种伪类状态切换实现人机交互

    常见的color, font-family, background 等css属性都能够设置链接的样式,a链接的特殊性在于能够根据它们所处的状态来设置它们的样式.a标签与人交互的4个状态属于伪类状态切换 ...

  3. Ansible学习笔记(一):部署管理Windows机器遇到的一些坑

    在给国盛通上海测试环境做Ansible管理Windows服务器的时候,遇到了一些坑,Google解决掉了,特此记录,坑用红色标记. 一.环境说明 1.Ansible管理主机 操作系统:CentOS 7 ...

  4. redis 5.0.7 源码阅读——压缩列表ziplist

    redis中压缩列表ziplist相关的文件为:ziplist.h与ziplist.c 压缩列表是redis专门开发出来为了节约内存的内存编码数据结构.源码中关于压缩列表介绍的注释也写得比较详细. 一 ...

  5. Codeforces Round447 D树上前缀和

    已知完全二叉树和每条边的权值,q次询问,每次给出sta起点和H. w=(H-点到sta的权值),求w>0的所有w的加和. 这题用树上前缀和来写,e[i]记录子树上的点到点i的距离,sum[i][ ...

  6. Uderstanding and using Pointers 读书笔记

    如何阅读指针? 从右向左读. 比如 const int *pci; 虚拟内存和虚拟内存地址是什么? 一个应用程序,在虚拟内存地址里也许是连续的,但是在物理内存里也许是分隔开来的. 虚拟内存和物理内存的 ...

  7. cf1280B

    题意:给出一个n*m的矩阵,矩阵中的元素要么P要么是A 每次可以选择一个的子矩形,然后将矩阵中每一行都变为第一行,或者将矩阵中每一列都变为第一列 要求用最少的次数将矩阵中所有元素都变成A 题解:分类讨 ...

  8. 除了降低成本和加速数字化转型,低代码还能给企业带来什么价值 ZT

    翻译自:https://dzone.com/articles/measuring-the-roi-of-low-code-1,有删改 低代码 是一种近些年兴起的企业软件快速开发技术和工具.借助低代码使 ...

  9. jQuery---五角星评分案例

    五角星评分案例 1. 鼠标经过li的时候,当前的位置是实心五角星,前面的是实心.当前位置后面的是空心.注意此处不能完全用链式编程写到底 2. 鼠标离开,comment的所有孩子变为空心五角星.额外,找 ...

  10. 基于topsis和熵权法

    % % X 数据矩阵 % % n 数据矩阵行数即评价对象数目 % % m 数据矩阵列数即经济指标数目 % % B 乘以熵权的数据矩阵 % % Dist_max D+ 与最大值的距离向量 % % Dis ...