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. Cacti被监控机器 配置 snmp协议

    SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理.         snmpd.conf的 ...

  2. Vue使用v-for显示列表时,数组里的item数据更新,视图中列表不同步更新的解决方法

    由于初始化类型错误导致的不更新,代码是这样的: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  3. js将已有数组重新分组(将数组每10项分成一组)

    项目中碰到的一个小需求:分页请求数据,一次请求60条,需要将后台返回的数组每10条分成一组渲染一个表格(表格使用的是ant-design-vue的table) 实现逻辑: var chunk = 10 ...

  4. 【Java并发工具类】原子类

    前言 为保证计数器中count=+1的原子性,我们在前面使用的都是synchronized互斥锁方案,加锁独占访问的方式未免太过霸道,于是我们来介绍另一种解决原子性问题的无锁方案:原子变量.在正式介绍 ...

  5. Microsoft.EntityFrameworkCore.Tools 相关命令

    一.前言 Entity Framework(后面简称EF)作为微软家的ORM,自然而然从.NET Framework延续到了.NET Core. 二.程序包管理器控制台 为了能够在控制台中使用命令行来 ...

  6. JavaScrip流程控制之switch选择,for循环

    swith根据表达式的值来case ,break执行跳转语句 <!DOCTYPE html> <html lang="en"> <head> & ...

  7. Java工作流系统jflow从表功能介绍一

    关键词:工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流  bpm工作流系统  java工作流主流框架  自定义工作流引擎 表单设计器  流程设计器 从表也叫明细表, ...

  8. MySQL 普通索引和唯一索引的区别

    该文为< MySQL 实战 45 讲>的学习笔记,感谢查看,如有错误,欢迎指正 一.查询和更新上的区别 这两类索引在查询能力上是没差别的,主要考虑的是对更新性能的影响.建议尽量选择普通索引 ...

  9. (转)elasticsearch collapse 折叠字段应用

    转自:https://elasticsearch.cn/article/132 在 Elasticsearch 5.x 有一个字段折叠(Field Collapsing,#22337)的功能非常有意思 ...

  10. Rx基础

    >>返回<C# 并发编程> 1. 转换.NET事件 1.1. 进度通知 1.2. 定时器示例 1.3. 错误传递 2. 发通知给上下文 3. 用窗口和缓冲对事件分组 4. 用限 ...