Advertisement

python包的加载——__init__.py

阅读量:

在Python编程中常见的外部文件导入方式是预先编写一个特定功能模块的.py脚本,在另一个新的.py脚本中调用该预先编写的模块时可以通过将该预先编写的.py脚本复制到当前工作目录或者向sys.path添加该预先编写的.py脚本所在目录后进行import操作。这种方法适用于少量的独立脚本但如果程序数量较多且层级结构复杂则不适用为此我们希望能够设计出一种机制类似于Java中的包结构能够将多个独立的.py脚本组织在一起实现外部统一调用的同时内部也能互相调用以提高代码管理效率和可维护性

实际上,在解决这个问题时主要依赖的是Python中的包机制。其中位于__init__.py文件中的代码在包管理中扮演了关键角色。为了彻底理解这一问题,请先了解当Python解析import语句时具体进行了哪些操作。根据Python官方文档的描述:
第1步, 创建了一个新的空模块对象(这个模块可能包含多个组件)

在第2步中,请将该module对象插入到sys.module中。
在第3步中,请加载模块的代码(但前提是先需进行编译)。
在第4步中,请执行新模块中的相应代码。

在完成第3步的操作时(也就是进入模块导入流程),首先要确定模块程序的具体位置。其中核心依据是:假设目标模块名称为m1,则解释器会首先搜索查找m1.py文件。它首先检查当前目录是否存在该文件;如果不存在,则接着检查系统环境变量PY

全部评论 (0)

还没有任何评论哟~