Python 解释器有 -m
模组选项,该选项“将库模块 模组作为脚本运行”。
使用这个 python 代码 a.py:
if __name__ == "__main__":
print __package__
print __name__
我测试了 python -m a
"" <-- Empty String
__main__
而 python a.py
又回来了
None <-- None
__main__
对我来说,这两个调用似乎是相同的,除了 _ _ package _ _ is not Nothing 在使用-m 选项调用时。
有趣的是,使用 python -m runpy a
,我得到的结果与使用 python 模块编译得到 a.pyc 的 python -m a
相同。
这些调用之间的(实际)区别是什么? 它们之间有什么优点和缺点吗?
此外,DavidBeazley 的 Python 基本参考文献将其解释为“ M 选项将库模块作为脚本运行,该脚本在 _ _ main _ _ 模块中执行,然后再执行主脚本”,这是什么意思?