你能向我解释一下调用和调用之间有什么区别吗?

python -m mymod1 mymod2.py args

python mymod1.py mymod2.py args

看来在这两种情况下mymod1.py被称为和sys.argv

['mymod1.py', 'mymod2.py', 'args']

那么什么是-m切换为?

答案

第一行的Rationale的部分PEP 338说:

Python 2.4 添加了命令行开关 -m 以允许使用 Python 模块命名空间来定位模块以作为脚本执行。

所以你可以通过这种方式指定Python搜索路径中的任何模块,而不仅仅是当前目录中的文件。python mymod1.py mymod2.py args具有完全相同的效果。Scope of this proposal节指出:

在 Python 2.4 中,使用 -m 定位的模块的执行就像在命令行上提供了其文件名一样。

-m更多的事情是可能的,比如使用属于包一部分的模块等。这就是 PEP 338 其余部分的内容。

来自: stackoverflow.com