关于   小悟志   网站地图   归档   友情链接   联系   Feed

   云上小悟  +  

当前位置 : 首页 » InfoTech » Python的模块和包 正文

Python的模块和包

2017年1月30日 / 20次阅读  InfoTech
标签:麦新杰用Python

拍拍贷

文章《Python的模块和包》的特色图片

刚开始学习python的时候,就接触了模块的概念,一个.py文件就是一个模块,当时最先研究的问题尽然是如何对模块进行reload操作

模块我们使用module这个英文单词;我们用package来代表包这个概念。

现在来说说package,package就是将一组module组合在一起

写代码的时候,通过模块,我们可以很好的重用一些代码段,但是,也不能把所有代码都放在一个模块里面,于是,将多个模块打个包,组合在一起,整体对外提供接口,这就是包。包的另外一个好处还在于,避免名称冲突,只要包与包的名称不一样,内部的模块名称一样没有关系。

import一个模块,如果这个模块里面的代码有可以直接执行的部分,就直接执行了。

包是一个文件夹,import一个包,就是import那个文件夹的名字。只有这个文件夹下面有__init__.py文件存在(可以是空文件),这个文件夹才能被Python当成一个包来对待(没有__init__.py文件,名称不出错,import也不会报错)。因此,也可以这样理解,__init__.py文件就是包执行的代码。我们一般理解为包的初始化部分代码。

包是一个文件夹,包内还可以继续有包的存在,只要有__init__.py。这就是Python包的层次关系,如果把模块一并纳入考虑范围,模块,包,多重包这样一个层次递进的关系非常清晰明了。

包的__init__.py文件可以作为一个初始化程序,将包对外提供的接口展现出来(from...import语句),很多有名的Python第三方包都这样干,比如requests(requests是包文件夹的名字,里面有一个api.py,在__init__.py里面通过from .api import .......实现直接对外提供接口的表述)。

通过pip安装一个第三方的包,其实就是将这个包的所有文件下载到/lib/site-packages目录里面。(使用pip安装包,会自动安装这个包的依赖的其它的包,就像ubuntu里面的apt一样)

 

这里还有一个关键的问题要注意,就是namespace。我理解Python的namespace是以模块为单位的,在一个模块内部存在一个global的namespace,不同模块的namespace相互之间没有任何联系。

本文链接:http://www.maixj.net/ict/python-mokuai-bao-14144
云上小悟 麦新杰(QQ:1093023102)

-- (*^-^*) --

相关文章

评论是美德

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.


前一篇:
后一篇:

栏目精选


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号苏ICP备14045477号-1

网站二维码
拍拍贷
go to top