在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)

先给大家解释一下模块、包、库之间的概念:

  • 模块(module)其实就是 py 文件,里面定义了一些函数、类、变量等

  • 包(package)是多个模块的聚合体形成的文件夹,里面可以是多个 py 文件,也可以嵌套文件夹

  • 库是参考其他编程语言的说法,是指完成一定功能的代码集合,在 Python 中的形式就是模块和包

下面我们来分开介绍:模块

使用模块有什么好处?

最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突

定义和调用 Python 模块

下面先来看真实的定义一个 Python 模块。

定义一个 hello.py 模块,内容如下:


def sayhello( ):print("Hello 学长!")

一般情况下,我们使用 import 语句来引入模块:

import module1[, module2[,... moduleN]]

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。调用的时候使用 模块名.函数名 来进行调用

以上的示例为例,我们新建 do.py 文件调用 hello.py 模块中方法。

do.py 文件内容如下:


# 导入模块
import hello# 现在可以调用模块里包含的函数了
hello.sayhello()

在 do.py 页面执行快捷键 ctrl+b (sumblime中)

控制台输出:Hello 学长!,证明调用 hello.py 中的方法成功。

再来说“包”

你也许还想到,如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。

现在,假设我们的abcxyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如mycompany,按照如下目录存放:

mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py

包(package)是 Python 中对模块的更高一级的抽象。

简单来说,Python 允许用户把目录当成模块看待。这样一来,目录中的不同模块文件,就变成了「包」里面的子模块。此外,包目录下还可以有子目录,这些子目录也可以是 Python 包。这种分层,对模块识别、管理,都是非常有好处的。

特别地,对于一些大型 Python 工具包,内里可能有成百上千个不同功能的模块。科学计算领域,SciPy, NumPy, Matplotlib 等第三方工具,都是用包的形式发布的。

包定义

常见的包层级目录结构如下:

pakageName
-------__init__.py
-------moduleName1.py
-------moduleName2.py
------- ...

包路径下必须存在 __init__.py 文件。

使用 Python 包

Python 包的使用和模块的使用类似,下面是导入的语法:

import 包名.包名.模块名

总结

本节给大家介绍了 Python  模块和包的使用,模块是一组Python代码的集合,可以使用其他模块,也可以被其他模块使用。创建自己的模块时,要注意:

  • 模块名要遵循Python变量命名规范,不要使用中文、特殊字符;

  • 模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,

    检查方法是在Python交互环境执行import abc,若成功则说明系统存在此模块。

参考:

https://www.liaoxuefeng.com/wiki/1016959663602400/1017454145014176

https://www.python.org/

【Python基础入门系列】第06天:Python 模块和包相关推荐

  1. 【Python基础入门系列】第01天:环境搭建

    其实 Python 已经是一个很老的编程语言了,到现在(2019年) Python 已经高龄 28 岁,比很多程序员的年龄都大.现在之所以这么流行和社区.人工智能的发展,有很大的关系. 千里之行始于足 ...

  2. 【Python基础入门系列】第03天:Python 变量与数据类型

    这篇文章我们学习 Python 变量与数据类型 Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可 ...

  3. Python基础入门篇【2】--python脚本结构

    目录 文章目录 python脚本简单介绍 编写一个简单的python脚本 新建一个python脚本 python脚本的结构 python脚本的执行 python脚本的头部注释 什么是头注释? 头注释的 ...

  4. 【Python基础入门系列】第10天:Python 类与对象

    首先,我已经假定你是个萌新或已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿,我觉得有必要找一篇生动形象的示例来讲解. 由于你可能没有编程经验, 所以无法从学过 ...

  5. 【Python基础入门系列】第07天:Python 数据结构--序列

    python内置序列类型最常见的是列表,元组和字符串.(序列是python中最基础的数据结构,而数据结构是计算机存储,组织数据的方式.) 另外还提供了字典和集合的数据结构,但他们属于无顺序的数据集合体 ...

  6. 【Python基础入门系列】第05天:Python函数

    前面我们写过九九乘法表,但如果我要七七乘法表或五五乘法表的话,你会看到三者代码极其类似,只是循环变量不同,那么如何做到代码重用,而不是简单拷贝黏贴修改呢,其实可是使用函数完成这一功能! 先来试着看一看 ...

  7. 【Python基础入门系列】第04天:Python 流程控制

    在编程的世界中,流程控制是程序员运行的基础,流程控制决定了程序按照什么样的方式去执行,本节给大家介绍 Python 流程控制相关语法. if 语句 if 语句表示如何发生什么样的条件,执行什么样的逻辑 ...

  8. 【Python基础入门系列】第02天:Python 基础语法

    Python 语言与 Perl,C 和 Java 等语言有许多相似之处.但是,也存在一些差异.在本章中我们将来学习 Python 的基础语法,让你快速学会Python 编程. 开始你的第一个 Pyth ...

  9. 【Python基础入门系列】第09天:Python tuple

    Python 中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字.字符.甚至可以是其他数据结构 在 Python 中,最基本的数据结构是序列(在前面文章我们也说过序列),序列 ...

最新文章

  1. Request.ServerVariables获取环境变量
  2. 比特币现金(BCH)的百家争鸣时代
  3. CAB归档文件提取工具cabextract
  4. 测验7: 文件和数据格式化 (第7周)
  5. 关于python django.url问题 求助
  6. lwip连续发数据卡死_LwIP用TCP连接方式在数据量比较大协议栈卡死
  7. nginx 根据目录指定root_CentOS(7.6)基本操作与Nginx配置
  8. archlinux安装gnome-shell主题
  9. STM32f103 串口接收不定长数据
  10. 团队作业——项目验收与总结博客
  11. linux桌面下雪,分享|Linux/Unix 桌面趣事:让桌面下雪
  12. java后台实现CKFinder2.3版本+阿里OSS存储
  13. 调查显示:SD-WAN部署迅猛增长,MPLS不会消失
  14. 干货!深度推荐系统的探索与实践
  15. 技嘉服务器准系统epyc,技嘉为AMD霄龙处理器推出ATX主板 针对AMD EPYC
  16. VUE2.0全局方法注册
  17. Android AOSP 下载和编译
  18. C++打印超级玛丽游戏场景
  19. 深度:一文看懂养老机器人的前世、今生与未来
  20. 外贸要做好需要哪些技巧?

热门文章

  1. C语言目录操作 (Linux/Unix)
  2. oracle赋予一个用户查询另一个用户中所有表
  3. 剑指Offer-正则表达式匹配(Python)
  4. Docker 二进制安装docker
  5. 2018.2.8 php实现qq登陆接口
  6. 强名称程序集(strong name assembly)——为程序集赋予强名称
  7. IIS启用页面Gzip压缩实现说明
  8. 关于EMF模型的操作,赶紧记下来
  9. 智能小程序档案馆——如何给“包”瘦身
  10. 【Java学习】JDBC可以再深一点理解