Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49893
  • 博文数量: 5
  • 博客积分: 127
  • 博客等级: 入伍新兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 18:39
文章分类

全部博文(5)

文章存档

2011年(5)

分类: Python/Ruby

2011-04-27 09:38:44

       说实话,python2 和 python3之间的差别真是挺大的, 不光是语言层面的改变,很多2.X中模块都重新命名或废弃。下面就给出2.X和3.X之间对象比较的差别:
       python中排序等操作都是基于比较的,相对于python2,python3有什么改变呢?
  • 当用运算符 <, >, >= 和<= 比较两个不同类型的对象时会抛出TypeError如果对象没有实现运算符的重载;而在python2中这是合法的,即使排序是任意不明确的;当用min内置函数返回最小值时,在python2中结果是: 
  1. >>> min('a','b',1,2)
  2. 1
     python3中的结果是:

  1. >>> min('a','b',1,2)
  2. Traceback (most recent call last):
  3.   File "", line 1, in <module>
  4. 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字符串和字节字符串)是可以相互比较的。
阅读(10933) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~