使用-m执行Python代码时调用有什么区别?

DDD
发布: 2024-10-22 21:28:30
原创
799 人浏览过

What are the Differences in Invocation when Executing Python Code with -m?

使用 -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__ 设置为空字符串,因为该模块不在包内。

packagename

对于 __package__:

    对于不带 -m 运行的脚本,__package__ 设置为 None,因为它们不能是包。
  • 对于在以下范围内使用 -m 运行的模块包,__package__ 设置为包的名称。
对于 __name__:

    它引用运行脚本时创建的
  • main 模块。
  • 对于使用 -m 运行的包,它指的是存储在 sys.modules['__main__'] 中的全局命名空间。当使用 -m 运行包时,将执行包中的
  • main 模块。

包执行的影响

运行包因为带有 -m 的脚本需要包内有 __main__.py 模块。当 Python 使用 -m 开关执行包时,此模块充当入口点。

以上是使用-m执行Python代码时调用有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!