使用 -m 了解 Python 代码执行中的调用差异
Python 解释器提供 -m 选项,该选项允许您执行库模块作为 __main__ 模块中的脚本。这种方法与不使用 -m 选项直接运行脚本不同,会导致某些区别和影响。
实际差异
使用 -m 时,Python 以不同的方式管理包。如果您尝试在没有 -m 的情况下执行包,解释器会将其视为常规脚本。相反,使用 -m 可以导入包,并且相对导入会正确地将包视为起点。
例如,考虑 a.py 中的以下代码:
<code class="py">if __name__ == "__main__": print(__package__) print(__name__)</code>
运行 python a.py 会产生:
None __main__
而使用 python -m a 会产生:
"" __main__
这里,在第一种情况下 __package__ 变量为空,因为文件是作为脚本执行。使用 -m 时,__package__ 设置为空字符串,因为该模块不在包内。
package 和 name
对于 __package__:包执行的影响
运行包因为带有 -m 的脚本需要包内有 __main__.py 模块。当 Python 使用 -m 开关执行包时,此模块充当入口点。以上是使用-m执行Python代码时调用有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!