Python 2.x 和 Python 3.x 的区别丨转载

也不知道源作者是谁。。。反正百度一搜,内容一致的就是啦!!

Python 2.x Python 3.x
print 一条语句 一个函数
编码 默认编码为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字节 不被国外认可


Leave a Reply

Your email address will not be published. Required fields are marked *