也不知道源作者是谁。。。反正百度一搜,内容一致的就是啦!!
Python 2.x | Python 3.x | |
---|---|---|
一条语句 | 一个函数 | |
编码 | 默认编码为ascii | 默认编码为utf-8 |
除法:/ | 结果类型与被除数、除数相同 | 对于整数之间的相除,结果也会是浮点数 |
除法:// | floor除法 | floor除法 |
True/False | 全局变量,对应数值分别为1/0 | 关键字,不允许被重新赋值 |
异常 | except exc, var | except exc as var |
xrange() | 创建迭代对象 | 取消了该函数 |
八进制字面量表示 | 两种写法0o1000/01000 | 只能0o1000 |
不等运算符 | <> 或 != | 只能 != |
nonlocal | 无法在嵌套函数中将变量声明为非局部变量 | 使用nonlocal |
数据类型 | 可以使用long | 去掉long,即只有一种整型int |
此外,字符串是最大的变化之一,这个变化使得编码问题降到了最低可能。在 Python2 中,字符串有两个类型,一个是 unicode,一个是 str,前者表示文本字符串,后者表示字节序列,不过两者并没有明显的界限,开发者也感觉很混乱,不明白编码错误的原因,不过在 Python3 中两者做了严格区分,分别用 str 表示字符串,bytes 表示字节序列,任何需要写入文本或者网络传输的数据都只接收字节序列,这就从源头上阻止了编码错误的问题。
Python 2.x | Python 3.x | 表现 | 转换 | 作用 |
---|---|---|---|---|
str | bytes | 字节 | encode | 存储、传输 |
unicode | str | 字符 | decode | 展示 |
这里补充一下编码相关的问题:
编码方式 | 英文 | 汉字 | 备注 |
---|---|---|---|
ASCII | 1字节 | 无 | 最早的字符编码规范 |
UNICODE(万国码) | 2字节 | 3字节 | 至少以2字节表示,所以不兼容ASCII |
UTF-8 | 1字节 | 3字节 | 兼容ASCII |
GBK等中文编码方式 | 无 | 2字节 | 不被国外认可 |