-
输入, py2中:raw_input(); py3中:input()
-
输出, py2中:print语句; py3中:print()函数
-
除法,py2中整数间进行’/‘和’//‘运算返回的是整数,而py3的’/'运算返回的是浮点数
-
遍历范围,py2中:range()或xrange(); py3中:不等于,py2中:range
-
不等于,py2中:<>或!= ; py3中:!=
-
编码问题,py3默认使用unicode,字节是bytes;而py2中字节是str, 默认支持ascii编码,unicode需要在前面加u
-
异常,py2中:except exec, var ; py3中:except exec as var
-
八进制字面量,py2中:0o777或0777 ; py3中:0o777
-
去掉了repr表达式``,py2中:反引号相当于repr()的作用; py3中:去除反引号写法
-
多个模块变化
旧的名字 | 新的名字 |
---|---|
_winreg | winreg |
ConfigParser | configparser |
copy_reg | copyreg |
Queue | queue |
SocketServer | socketserver |
repr | reprlib |
-
数据类型,py3中去除long类型,只有int
-
rasie,py2中:raise IOError, “file error”; py3中:raise IOError(“file error”)
-
去除.next(),py2中:next(generator)和generator.next(); py3中:next(generator)
-
py3中for循环变量不会导致命名空间泄漏
-
py3中不能比较不可排序类型,需同类型比较
-
py3中range、zip、map、reduce、filter等返回的是可迭代对象,而不是列表
-
py3中新增asynico内置库,async/await原生协程支持异步编程
-
py3中移除cmp函数
-
py3中去除元组参数解包
-
增加了@abstractmethod和 @abstractproperty两个 decorator,编写抽象方法(属性)更加方便
-
移除了cPickle模块,可以使用pickle模块代替
-
移除了new模块
-
移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2,
rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模块 -
移除了imageop模块
-
迭代器的next()方法改名为__next__(),并增加内置函数next(),用以调用迭代器的__next__()方法