一,问题:
我们想把代码按照一定的层次结构组织成包
二,解决方案:
创建一个软件包结构是很简单的。只要把代码按照所希望的方式在文件系统上进行组织,并确保每个目录中都定义了一个_init_py文件即可。例如:
graphics/ _init_.py primitive/ _init_.py line.py fill.py text.py formats/ _init_.py png.py jpg.py
一旦完成,就可以执行各种各样的import语句了,比如:
import graphics.primitive.line from graphics.primitive import line import graphics.formats.jpg as jpg
三,讨论:
定义一个具有层次结构的模块就如同在文件系统上创建目录一样简单。_init_.py文件的目的就是包含可选的初始化代码,当遇到软件包中不同层次的模块时会触发运行。比如,如果写下import graphics语句时,文件graphics/_init_.py会被导入并graphics命名空间中的内容。对于import graphics.formats.jpg这样的导入语句,文件graphics/_init_.py和graphics/formats/_init_py都会在最终导入文件graphics/formats/jpg.py之前优先得到导入。