跳到内容

sys-version-cmp-str3 (YTT103)

源自 flake8-2020 linter。

作用

检查将 sys.version 与字符串字面量进行比较的情况,此类比较在 Python 3.10 或更高版本上会评估为 False

为什么这不好?

sys.version 与字符串进行比较容易出错,并可能导致细微的错误,因为比较将按字典顺序执行,而不是按语义执行。例如,在使用 Python 3.10 时,sys.version > "3.9" 将评估为 False,因为 "3.10" 在字典顺序上“小于” "3.9"

相反,请使用 sys.version_info 来访问当前主版本号和次版本号作为元组,该元组可以与其他元组进行比较,而不会出现问题。

示例

import sys

sys.version > "3.9"  # `False` on Python 3.10.

建议改为

import sys

sys.version_info > (3, 9)  # `True` on Python 3.10.

参考