导入库有时是一件繁琐的事儿。尤其是,当引用库数量级比较客观的时候。如果将大量的导入import放在程序入口源文件代码,即时“胡乱“的命名堆叠在一块,查找起来眼花缭乱,不甚方便。何不将将命名和导入规范模块化?
假设项目名称为ExampleProject,程序入口为main.py,需要引用的类为~/guancha/guancha.GuanChaLoader。直接的导入代码应该为“
from guancha.guancha import GuanChaLoader
”,或者“
from guancha.guancha import *
”。当ExampleProject比较庞大,引用的库比较多时,很可能看到的就是“
# Import a mass of packages at the main source file
from a import b
from a import c
from a import d
from a import e
from a import f
from a.c import *
from d.a import b
from d.a import c
from d.a import d
from d.a import e
from d.a import f
from d.a.c import a
from d.a.c import b
from d.a.c import c
from d.a.c import d
from d.a.c import e
from e import *
from f import *
from g import *
from h import *
from i import *
from j import *
import k
import l
import m
import n
import o
import p
import q
import r.a
import r.a.b
import r.a.c
”。虽然很多IDE包含代码块折叠显示的功能,但是有时还是不得不点开来查阅和编辑导入库。接下来尝试将该项工作变得有条理有序化。根目录下建立一个importio.py文件,所有主要库或类的导入皆由该文件来处理。在main.py处理导入文件的代码就剩一行辣!
from importio import *
main.py预览图:
importio.py中按信息系统模块导入文件。在这里,导入news模块的文件为importnews.py。代码应该类似为“
from importnews import *
”。
在importnews.py中,按实际的情况具体添加库文件的导入。假设,需要导入guancha.py中的类GuanChaLoader。在该文件中,代码可以写“
from guancha import guancha
”。
guancha.py预览图:
这样,回到第一张main.py的截图,新建GuanChaLoader类的代码为“
guancha_loader = guancha.GuanChaLoader()
”或者“
guancha.GuanChaLoader()
”。命令行输入
~/*/ExampleProject$ python main.py
进行测试结果。
结果显示正常没问题。
在以上一番操作后,原本集中在主文件的大量导入操作,就会分散下放至不同的信息系统模块和具体类导入工作中。其优点是导入工作条理化清晰化、便于维护,缺点是很可能混淆重复导入相同的库。