做什么sys.version_info.major
?
我知道这会sys.version_info
返回我们正在使用的解释器版本。在这其中必须扮演什么角色major
?
它在以下代码中如何工作?
import sys
if sys.version_info.major < 3:
#code here
else:
#code here
做什么sys.version_info.major
?
我知道这会sys.version_info
返回我们正在使用的解释器版本。在这其中必须扮演什么角色major
?
它在以下代码中如何工作?
import sys
if sys.version_info.major < 3:
#code here
else:
#code here
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.version_info
sys.version_info(major=3, minor=5, micro=1, releaselevel='final', serial=0)
专业可以告诉你是python2还是python3。我猜它导入不同的库取决于特定的 python 版本。
我使用的是 python 3.5.1,你可以看到version_info
它。
这是一个老生常谈的例子:
from __future__ import print_function
import sys
if sys.version_info.major<3:
input = raw_input # Python2 ~== eval(input())
else:
#code here
这使得 Python 2.x 的行为更像 Python 3……未来的导入不能在if套件中,因为它必须出现在其他导入之前。但是Python 2.x 和 Python 3 之间input()内置函数的语义变化可以在条件中处理。
在大多数情况下,在同一个文件中支持 Python2 和 Python3 的努力超出此范围是一个坏主意。
Python2 和 Python3 之间更具挑战性的变化将字符串作为字节与较新的字符串作为 Unicode 相关;因此需要为许多网络协议和 API显式指定编码并使用字节对象。
例如,我的计算机上安装了 Python 3.5.3。sys_version
存储以下信息:
sys.version_info(major=3, minor=5, micro=3, releaselevel='final', serial=0)
版本被拆分为 的原因是,major
为多个 Python 版本编写代码的程序员可能需要以某种方式区分它们。大多数差异都在 Python 的主要版本 2 和 3 之间,这解释了代码中的使用上下文。minor
micro
major
告诉你 Python 版本:>>> sys.version_info
sys.version_info
sys.version_info(major=3, minor=7, micro=8, releaselevel='final', serial=0)