-m开关的用途是什么?

你能向我解释一下通话之间的区别吗?

python -m mymod1 mymod2.py args 

 python mymod1.py mymod2.py args 

似乎在这两种情况下mymod1.pysys.argv

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

那么什么是-m开关?

PEP 338 Rationale部分的第一行说:

Python 2.4添加了命令行开关-m,允许模块使用Python模块名称空间作为脚本执行。 激励的例子是标准的库模块,如pdb和profile,Python 2.4的实现对于这个有限的目的是很好的。

所以你可以这样在Python的searchpath中指定任何模块,而不仅仅是当前目录中的文件。 你是正确的python mymod1.py mymod2.py args具有完全相同的效果。 Scope of this proposal部分的Scope of this proposal的第一行指出:

在Python 2.4中,使用-m的模块就像在命令行上提供的一样。

使用-m更多是可能的,就像使用模块是一个包的一部分,等等。这就是PEP 338的其余部分。 阅读更多信息。