Python模块和包

三天打鱼,两天晒网,好尴尬


<!--more-->

前言

最近在写一个Python的工具,为了使代码清晰易阅读,我分了若干个模块.模块间是有层次关系的,所以此时有必要引入"包(package)".

通过一个小的Demo展示了如何在包和模块间互相引用

Demo

代码树状图如下:

1
2
3
4
5
6
7
8
9
10
11
└── relative_import
├── main.py
├── subpackage1
│   ├── __init__.py
│   ├── module_x.py
│   └── module_y.py
└── subpackage2
├── __init__.py
└── module_z.py
3 directories, 6 files

其中main.py是入口,引用关系如下:

1
2
3
main-->module_x
module_x-->module_y
module_y-->module_z

我们囊括如下几种情况:

  • 引用子目录的模块
  • 引用同级模块
  • 引用不同目录的模块

包(Package)

包是若干模块的一个集合,一个文件夹变成包的方法就是在其中放入__init__.py文件.在导入包的时候,该文件将会首先执行文件.

所以,在我们的代码中,subpackage1和subpackage2是两个包.

模块(module)

模块,简而言之就是一个文件.文件名除去后缀就是模块名了.

函数和类

在导入后,使用中是不区分函数和类的.在后面的代码中,我们将会看到.

示例代码

下面是我写的小例子,满足了我开发中的分类需求. github Demo 在执行了main.py后,将会依次执行module_x,module_y,module_z中的代码.

参考资料

csdn 不同层级导入 python导入模块