sys-version-info0-eq3 (YTT201)
源自 flake8-2020 linter。
作用
检查针对由 sys.version_info
返回的主版本号的相等性比较(例如,sys.version_info[0] == 3
或 sys.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.