<p>你有两个问题。我将跳过“什么是最快的方法”,只回答主要问题。你知道吗</p>
<blockquote>
<p>But is python -V considered to be as stable?</p>
</blockquote>
<p>绝对不是。所有这些<a href="https://docs.python.org/3/using/cmdline.html#cmdoption-V" rel="nofollow">documented</a>就是:</p>
<blockquote>
<p>Print the Python version number and exit. Example output could be:</p>
</blockquote>
<pre><code>Python 3.0
</code></pre>
<ul>
<li>正如你自己指出的,它不仅没有记录在哪里打印,而且他们在3.3和3.4之间更改了它。你知道吗</li>
<li>格式没有任何保证。甚至文档中的例子也不是你想要的格式。(我假设另一个例子中的<code>[:3]</code>意味着您实际上需要<code>3.0.2</code>,而不是<code>3.0</code>)。你知道吗</li>
<li>实际上,您的脚本甚至没有为每个流行的Python解释器获得<code>X.Y.Z</code>版本。
<ul>
<li>PyPy报告两个版本号,Python语言的版本和pypypy解释器的版本。如果我在pypyvirtualenv中运行您的脚本,它会给我两个值,<code>2.7.8</code>和<code>2.5.0</code>。在这种情况下,你想要的是第一个,但你在多大程度上相信“在这种情况下”?你知道吗</li>
<li>Jython只报告了一个版本号,即2.2、2.5和2.7之前版本的前两位所需的版本号,但是有2.3之前的版本不支持大多数Python2.3,但仍然称自己为<code>2.3.0</code>。你知道吗</li>
</ul></li>
</ul>
<p>相比之下,<a href="https://docs.python.org/3/library/sys.html#sys.version_info" rel="nofollow">^{<cd8>}</a>文档中给出的三个整数正是您想要的。(好吧,只要您不需要python1.5兼容性,因为<code>version_info</code>直到1.6/2.0才存在。)</p>
<p>还请注意,文档明确指出不要从<code>sys.version</code>中提取版本信息,我认为这比<code>python -V</code>更稳定(正如在所有主要实现中解释的那样,这意味着它实际上必须从Python版本号开始,尽管它有点模糊)。你知道吗</p>
<p>但你并不在乎它是否“稳定”,你只在乎它是否“足够稳定”。答案至少部分是主观的,而且非常依赖于使用。如果它适用于您关心的每个Python版本和实现(假设您知道并可以测试所有您关心的实现……),那么它就足够稳定了,对吗?你知道吗</p>