Python下实现版本号比较
目录
比如一个产品在某个版本之后新增了某个特性,那么在用目标特性时,版本比较是必需的。
假设版本号由数字和点符号构成,格式为a.b.c,那么在Python下可以轻松实现。
下面是在IPython下的示例:
In [1]: v1 = '3.4.6'
In [2]: t1 = tuple(int(val) for val in v1.split('.'))
In [3]: t1
Out[3]: (3, 4, 6)
In [4]: v2 = '3.2.0'
In [5]: t2 = tuple(int(val) for val in v2.split('.'))
In [6]: t2
Out[6]: (3, 2, 0)
In [7]: t1 > t2
Out[7]: True
将版本号的数字解析为一个元组,利用元组的原生比较,判断版本的高低。
元组或列表的原生比较规则是逐位比较:
- 如果元素类型相同,进行比较,返回结果
- 如果元素类型不同,检查二者是否为数字
- 如果均是数字,执行必要的强制数字类型转换,然后比较(个人理解是不同的数字类型,比如int和float)
- 如果其中一个元素是数字,则另一个元素大,(数字在类型上是最小的)
- 否则,按类型名字的字母表顺序进行比较
如果其中一个元组先到达末尾,则长度更长的元组为更大的一方;如果元组长度相同,对应位置的元素也相同,那么两个元组相等。
参考