跳到内容

sys-version-info0-eq3 (YTT201)

源自 flake8-2020 linter。

作用

检查针对由 sys.version_info 返回的主版本号的相等性比较(例如,sys.version_info[0] == 3sys.version_info[0] != 3)。

为什么这不好?

使用 sys.version_info[0] == 3 来验证主版本号是否为 Python 3 或更高版本,如果主版本号递增(例如,到 Python 4)将会失败。这可能不是预期的,因为使用此比较的代码可能旨在在 Python 2 上运行,但现在也会在 Python 4 上运行。 同样,使用 sys.version_info[0] != 3 来检查 Python 2 也会在主版本号递增时失败。

相反,使用 >= 来检查主版本号是否为 3 或更高版本,或使用 < 来检查主版本号是否小于 3,以使代码具有未来的兼容性。

示例

import sys

if sys.version_info[0] == 3:
    ...
else:
    print("Python 2")  # This will be printed on Python 4.

建议改为

import sys

if sys.version_info >= (3,):
    ...
else:
    print("Python 2")  # This will not be printed on Python 4.

参考