Python 模块是组织的基本单位,有两种形式:代码模块和包模块。代码模块由可执行的 Python 代码组成,而包模块包含包含其他模块的目录。
Python 为模块分配唯一的标识符,称为模块名和文件名。通常,模块由 Python 代码中的模块名和命令行中的文件名来标识。 Python 使用 sys.path 变量将模块名无缝转换为文件名。
在 Python 2.4.1 中引入,-m 开关最初允许通过命令执行模块基于其模块名称的行。这提供了指定文件名的替代方法。在其初始迭代中,-m 仅支持顶级模块名称。
PEP 338 扩展 -m 来处理更复杂的模块名称表示,允许执行嵌套模块,例如 http.server。此外,它还要求评估所有父包 __init__.py 文件。
最后的关键进步来自 PEP 366,赋予 -m 不仅支持绝对导入而且还支持显式相对导入的能力。这是通过将 package 变量设置为给定模块名称的父模块来实现的。
尽管 -m 功能强大,但其局限性在于它只能执行用 Python 编写的模块(.py 文件)。不支持 C 编译代码模块。
通过 Import 语句执行模块:
通过命令行执行模块文件名:
通过命令行使用模块名称(-m)执行模块:
-m 开关是从命令行执行 Python 模块的强大工具。它能够将模块名转换为文件名、执行本地包以及支持相对导入,为管理 Python 代码提供了一种方便且通用的方法。尽管它限制了执行基于 Python 的模块,但 -m 对于 Python 开发人员来说仍然是无价的资产。
以上是Python 的 `-m` 开关的目的是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!