Python Modules 机制简述
Module 作为脚本执行 当以 python module.py 运行 module 时,__name__ 会被设置为 __main__,所以在模块尾部添加以下代码可以使该代码仅在 module 作为主文件执行时运行: 1 2 if __name__ == "__main__": pass Module 搜索路径 当导入 spam 这个 module 时,解释器会 先在 sys.builtin_module_names 中搜索,看是不是 built-in modules 如果没有找到,就会在 sys.path 中搜索 spam.py 文件 sys.path 的值从以下位置初始化: 第一个位置:当前脚本所在的目录;若没有指定脚本(REPL),则就是一个代表当前工作目录的空字符串 PYTHONPATH 依赖于安装的默认值(按惯例包含 site-packages 目录) __pycache__ 为了加快 module 的加载速度,Python 将每个 module 的编译版本保存为 __pycache__ 目录下的 module.version.pyc 文件。从 .pyc 文件读取程序的运行速度并不比从 .py 文件读取程序的速度快; .pyc 文件唯一更快的是它们的加载速度。 Packages 注意:所有 packages 都是 modules,但反之不然。换句话说,Package 是一种特殊的 module。特别地,任何包含 __path__ 的 module 被视为一个 pacakge。为便于理解,可以把 module 视为 ....