在 Python 2 中, print 被视为一个语句而不是一个函数。在使用 Python 3 时,print()会被显式地视为一个函数。注:print()语法也与 Python 2.7 向后兼容,因此您的 Python 3 print()函数可以在任一版本中运行。
在 Python 2 中,您键入的任何不带小数的数字,将被视为整数的编程类型。 5 / 2 = 2 5.0 / 2.0 = 2.5在 Python 3 中,整数除法变得更直观. 5 / 2 = 2.5 5 // 2 = 2 <整除>注:在 Python 3 中的这种修改使得整数除法更为直观,并且它的特点是不能向后兼容 Python 2.7。python2中也适用整除语法(//) 并不是舍弃小数部分,而是执行floor操作,如果要截取小数部分,那么需要使用math模块的trunc函数 trunc 函数是不管符号的,只对数值部分取整
Python 2 默认使用 ASCII 字母表Python 3 默认使用 Unicode注:如果你希望你的 Python 3 代码向后兼容 Python 2,你可以通过在你的字符串的前面保留 “u” 来实现。 u“Hello,Sammy!” 前缀 u 代表 Unicode
捕获异常的语法由 except exc, var 改为 except exc as var。在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。
在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典推导式。在 Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中 xrange() 会抛出命名异常)。
在Python 2.x, 八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111在Python 3.x中,表示八进制字面量的方式只有一种,就是0o1000
Python 2.x中不等于有两种写法 != 和 <>Python 3.x中去掉了<>, 只有!=一种写法
迭代器iterator的next()函数被Python3废弃,统一使用next(iterator)
raw_input函数被Python3废弃,统一使用input函数
青冥有晓月