【Python零基础学习】python包详解

python 包详解

什么是 包

包是对模块进行管理的一种方式,对模块也限定了命名空间

比如有个包叫 A,其中有个模块叫 B,要访问模块是 A.B

这里的.点号表示属性访问,模块从属于包

比如你开发了一个模块叫 http.py,别人也开发了一个模块叫 http.py,相同的模块,
到底引用的是哪个呢?容易混肴,因此通过包来管理

你开发的包叫 me ,里面有很多 模块,也包括 http.py
别人开发的包叫 text,里面也有很多 模块,当热包括 http.py

访问你的模块就用 me.http
访问别人的模块就用 text.htp

这样通过限定命名空间来访问模块

python包结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
me/
|-- audio
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
|-- video
| |-- __init__.py
| |-- name.py
| |-- count.py
| `-- req.py
|-- settings.py
|-- urls.py
`-- wsgi.py

以上有两个包结构,一个是 audio 一个是 video

每个包必须有一个 init.py 文件
这个文件非常重要,一来标识这是一个python包,二来这个文件包含了控制包的用法的代码
当导入包的时候,目录中的每个文件并没有立即被导入,init.py首先被计算

最简单的init.py的方式就是 内容为空

包audio包含了三个模块,分别是 settings.py urls.py wsgi.py

包video包含了两个模块,分别是 name.py count.py req.py

如何导入包

当导入包的时候,python会根据sys.path内的路径来查找这个包

导入一个包

1
import os

导入了一个包 os

导入包中的模块

1
from django import http

表示从包django中导入了模块 http

导入包中的所有模块

1
from os import *

把包os中的所有模块都导入进来

但是这样,这种导入所有模块的方式,是一个非常危险的操作

坚持原创技术分享,谢谢鼓励我继续创作!