说实话,python2 和 python3之间的差别真是挺大的, 不光是语言层面的改变,很多2.X中模块都重新命名或废弃。下面就给出2.X和3.X之间对象比较的差别:
python中排序等操作都是基于比较的,相对于python2,python3有什么改变呢?
- 当用运算符 <, >, >= 和<= 比较两个不同类型的对象时会抛出TypeError如果对象没有实现运算符的重载;而在python2中这是合法的,即使排序是任意不明确的;当用min内置函数返回最小值时,在python2中结果是:
python3中的结果是:
- >>> min('a','b',1,2)
-
Traceback (most recent call last):
-
File "", line 1, in <module>
-
TypeError: unorderable types: int() < str()
这就是很多2.X的代码在3.X中运行时遇到的错误;
- 当为非内置的类型自定义比较规则时,2.X中__cmp__已废弃不用,建议使用__gt__,__lt__,__le__,__ge__,__eq__,__nq__等函数;
- 3.X中unicode字符串包括了ASCII字符,所以是不能与bytes类型比较的;而在2.X中8-比特字符串(包括ASCII字符串和字节字符串)是可以相互比较的。
阅读(10914) | 评论(0) | 转发(0) |