目录

1、背景

2、module的简介

3、library的简介

4、package的简介

5、Python中的module和library之间的区别

6、Python中的module和package之间的区别

7、包的使用

8、包的一些问题

1、背景

 Python中的module,library,package之间的区别。

2、module的简介

 module:模块

 Python中的module,说白了就是Python文件,而Python文件一般后缀为py,所以就是你的xxx.py

3、library的简介

 library:库,也常称为:库文件。

 之所以此处不说时Python的library,那是因为,本省library这个词,一般都是针对其他的编译型语言,比如c,c#等语言来说的。常见的c/c#等语言中的library,一般指的就是:

  • 静态的库文件:xxx.a
  • 动态的库文件:xxx.dll

4、package的简介

 package:包

 Python中的package,可以简单的理解为,一组的module,一堆(相关)module组合而成的。通常包总是一个目录,可以使用import导入包,或者from+import来导入包中的部分模块。包目录下方为首的一个文件便是init.py。然后是一些模块文件和子目录,假如子目录中也有int.py,那么它就是这个包的子包了。

5、Python中的module和library之间的区别

 对于library和module,说白了,都是提供了一定的功能供别人调用。从这方面来说,也可以理解为:Python中的library等价于module;只不过Python中很少说library,正常情况下都说module。

 所以,简而言之:

  • library多数都是指的是C,C#等语言中的库,库文件;Python中很少用library这个词。
  • Python中的“库”称为“module”——模块。

6、Python中的module和package之间的区别

 导入单个的module,一般是这样的:

import my_module

 导入package一般是这样的:

from my_package.timing.dager.internets import function_of_love

 可以理解为:

  • module:单个的模块,一般是单个(偶尔为多个)python文件;
  • package:多个相关的module的组合。肯定是多个,相关的Python文件的组合;Package是用来把相关的模块组织在一起,成为一个整体的。

7、包的使用

 多个关系密切的模块应该组织成一个包,以便于维护和使用。这项技术能有效避免名字空间冲突。创建一个名字为包名字的文件夹并在该文件夹下创建一个init.py文件就定义了一个包。你可以根据需要在该文件夹下存放资源文件、已编译扩展及子包。

 举例来说,一个包可能有以下结构:

Graphics/__init__.pyPrimitive/__init__.pylines.pyfill.pytext.py...Graph2d/__init__.pyplot2d.py...Graph3d/__init__.pyplot3d.py...Formats/__init__.pygif.pypng.pytiff.pyjpeg.py

 import语句使用以下几种方式导入包中的模块:

import Graphics.Primitive.fill #导入模块Graphics.Primitive.fill,只能以全名访问模块属性,例如 Graphics.Primitive.fill.floodfill(img,x,y,color).
from Graphics.Primitive import fill# 导入模块fill ,只能以 fill.属性名这种方式访问模块属性,例如 fill.floodfill(img,x,y,color).
from Graphics.Primitive.fill import floodfill #导入模块fill ,并将函数floodfill放入当前名称空间,直接访问被导入的属性,例如 floodfill(img,x,y,color).

 无论一个包的哪个部分被导入,在文件init.py中的代码都会运行,这个文件的内容允许为空,不过通常情况下它用来存放包的初始化代码。导入过程遇到的所有init.py文件都被运行。因此,import Graphics,Primitive.fill语句会顺序运行Graphics和Primitive文件夹下的init.py文件。

8、包的一些问题

 下面这个语句具有歧义:

from Graphics.Primitive import *

 这个语句的意图是将Graphics.Primitive包下的所有模块导入当前的名称空间。然而,由于不同平台间文件名规则不同(比如大小写敏感问题),Python不能正确判定哪个模块要被导入。这个语句只会顺序运行Graphics和Primitive文件夹下的init.py文件,要解决这个问题,因该在Primitive文件夹下面的init.py中定义一个名字all的列表,例如:

# Graphics/Primitive/__init__.py
__all__ = ["lines","text","fill",...]  

 这样,上边的语句就可以导入列表中所有模块。

 下面这个语句只会执行Graphics目录下的init.py文件,而不会导入任何模块:


import Graphics
Graphics.Primitive.fill.floodfill(img,x,y,color)  # 失败!  

 不过既然import Graphics语句会运行Graphics目录下的init.py文件,我们就可以采取下面的手段来解决这个问题:

# Graphics/__init__.py
import Primitive, Graph2d, Graph3d
# Graphics/Primitive/__init__.py
import lines, fill, text, ... 

 这样import Graphics语句就可以导入所有的子模块(只能用全名来访问这些模块的属性)

Reference

  • [1]Python Module和Package辨析": 的作用

  • [2]Python中的module,library,package之间的区别

Python的Module,Library,Package的区别相关推荐

  1. python 引用模块module和包package的区别

    补充一点模块和包的定义: (1)模块: Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. (2)包: 包(Packa ...

  2. 【Python】function、module、Package及import导入方法

    计算机程序开发中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里面,这样,这个文件包含的代码就相对较少,很多编程 ...

  3. 探究 python import机制、module、package与名字空间

    在开始之前,先了解一个内置函数dir(),它可以帮助我们分析一些内部的东西,dir()的描述是: dir(): 函数不带参数时,返回当前范围内的变量.方法和定义的类型列表:带参数时,返回参数的属性.方 ...

  4. python中__init__.py的作用、module和package

    控制包的导入行为: 1.声明当前文件是一个可导入的包: 2.如果当下包下有多个.py文件使用__ all__ = [ '模块名'],也就是form XXX import YYY module和pack ...

  5. pycharm中创建的dictionary与python package的区别

    在pycharm中,创建的dictionary(目录)与python package的区别 python package 这是一个特殊的目录,因为在创建该python package的时候,系统会自动 ...

  6. pycharm中python的默认安装路径_mac PyCharm添加Python解释器及添加package路径的方法...

    一.背景 PyCharm执行Python时,找不到自己安装的package,例如pandas.numpy.scipy.scikit等,在执行时报如下错误ImportError: No module n ...

  7. python 模块(Module)和包

    阿里云大学人工智能学前小测验-Python测验 19.以下关于模块说法正确的是 A. 一个.py就是一个模块 B. 任何一个普通的xx.py文件可以作为模块导入 C. 模块文件的扩展名一定是 .py ...

  8. Maven命令 install 和 package的区别

    Maven命令 install 和 package的区别 Maven是目前十分流行的项目构建工具以及依赖解决工具,其提供的常用指令中有两个很容易引起使用者的疑惑, 那就是 install 和 pack ...

  9. python与matlab哪个更容易学-详解python和matlab的优势与区别

    Python是一种面向对象的解释型计算机程序设计语言.Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 .Pytho ...

最新文章

  1. 近亿台物联网设备或遭劫持,这家IoT云平台遭遇“灾难性”入侵事件
  2. 利用XtraBackup做mysql不停机重做主从复制
  3. 【5月19日】 开源论文代码分享 分割、姿势预测,目标检测
  4. 追求极简:Docker镜像构建演化史
  5. mysql数据库2013_MySQL数据库备份(2)2013-6-13
  6. POJ 2342 (树形DP)
  7. 逐行粒度的vuex源码分析
  8. linux和android学习,android学习笔记
  9. ubuntu 安装搜狗输入法_超详细的ubuntu14.04安装搜狗输入法教程
  10. java iecapt.exe_java替换url的域名和端口方法
  11. 《DSP using MATLAB》示例Example 8.5
  12. 我的世界1.8正版服务器大全,史上最全服务器汇总 我的世界1.8服务器地址大全...
  13. python爬取豆丁网文章_百度文库爬取分析 - osc_tgjycqas的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. C# 多线程BackgroundWorker
  15. 传智播客大型人才招聘会成功举行
  16. 关于dvb 基本知识
  17. matlab 小波的分解与重构
  18. 马氏距离例题详解(全网最详细)
  19. 内网安全-域横向CSMSF联动及应急响应初识
  20. XStream分析(2)

热门文章

  1. 如何全面的理解APS自动排产系统?
  2. Linux快捷键大全(参考)
  3. C语言编程编制职工档案管理程序,C语言课程设计--职工档案及简明信息生成.doc...
  4. 今日头条信息流 - 人群包dmp
  5. 在Sever 2012中应用iSCSI目标程序
  6. WLAN 无线局域网
  7. 一打开控制台窗口就中文输入_一起来玩SiFive的RISCV平台,玩转起来就免费得
  8. 链塔小程序产品更新说明
  9. u盘文件变成快捷方式怎么恢复,恢复U盘文件的五种方法
  10. scratch零基础