2021年10月,Python 的 3.10 版本正式发布。但之前的 Python 3.6、3.7、3.8、3.9 子版本都为个位数,程序员可能习惯了这种版本格式,因此编写涉及版本号的代码时,未曾考虑到 3.10 版本。
本位列举一些相关bug,已在笔者的旧代码中出现,需要修复。
有的代码会将版本号保存为数值类型,便于比较大小:
>>> 3.8 < 3.9 # 以前可以这样比较版本号 True >>> 3.8 < 3.10 # 现在出现了 3.10 ,直接比较版本号会出错 False >>> 3.10 # 将 3.10 当作 float 类型直接保存会出错,应该采用 str 类型 3.1版本号为字符串类型?
有的代码会将版本号保存为字符串类型,且认为该字符串的长度总是为 3 :
>>> import platform >>> version = platform.python_version() >>> version '3.9.7' >>> version[:3] # 获取前 3 位字符作为版本号 '3.9'
遇到 3.10 版本时,这种惯性思维就会出错:
>>> version = '3.10.0' >>> version[:3] '3.1'版本号排序?
有的代码会将版本号直接排序:
>>> sorted(['3.7', '3.8', '3.9']) # 以前没问题 ['3.7', '3.8', '3.9'] >>> sorted(['3.7', '3.8', '3.9', '3.10']) # 现在问题来了,3.10 排序之后成了最小的版本 ['3.10', '3.7', '3.8', '3.9']



