前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|模块化编程

Python|模块化编程

作者头像
福贵
发布2020-02-17 14:41:53
9400
发布2020-02-17 14:41:53
举报
文章被收录于专栏:菜鸟致敬菜鸟致敬
  • 引言

模块化编程具备很多优点,尤其在复杂项目上体现更为明显。

Python模块化编程有助于开发者统筹兼顾和分工协作,并提升代码灵活性和可维护性,是编程开发者不可或缺的一项重要工具。

  • Python模块

在简单的Python编程中,我们所保存的以.py为后缀的代码文件(如hello.py),称为源文件(source file)。开始学习Python编程时,我们通常将项目所有代码放在一个源文件中进行编译实现。

但是随着深入学习和项目变得复杂起来时,这种做法将无法满足你快速找到你定义的函数(functions)或类(classes)的具体位置,这时模块化编程思想就有了用武之地。

我们可以创建一个Python模块(如module.py),其中module称为模块的名称。当然,Python模块在本质上就是一个源文件(source file),同样是以.py作为后缀保存。

Python模块通常包含的是项目需要实现的某个或某几个功能的源代码(source code),当你的项目需要实现包含在此模块中的功能时,运用import module则可导入此模块到项目中。

  • 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包时更容易。

创建Python包可以更好地组织协调复杂项目,能够将有关联的Python模块进行集中,甚至能够在Python包中继续定义Python包,称为嵌套包(nested packages)。

  • 组织项目

Python模块和包的应用不仅仅能将你项目的全部代码划分到各个模块和包中,而且它能够反映出项目的逻辑结构。

例如,当你需要创建一个网页应用用来存储和生成考试成绩单报告,则可以将这个项目划分为两个主要部分:

1) 网页接口,用来与用户交互使用;

2) 后端,操作数据库存储信息的内部逻辑并产生报告结果。如下图所示:

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

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

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

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

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

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

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

  • 小结

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与MySQL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档