一、版本对比
首先要说的是,python的版本,目前主要分为两大类:
python 2.x的版本的,被称为python2:是目前用的最广泛的,比如python 2.7.3。
python 3.x的版本的,被称为python3:是最新的版本的,比如python 3.1。长远来看,也算是以后的趋势。
【python2和python3之间的区别】
1.从python2到python3,很多基本的函数接口变了,甚至是,有些库或函数被去掉了,改名了
python2和python3,在很多基本的,最常用的函数方面,接口都变了,最典型的就要数大家最常用的print函数了。
2.第三方库的支持方面,目前来说,还是python2支持的最好,python3支持的不太够
python强大的原因之一是第三方的库很多,功能很强大。
而目前很多python的第三方的库,很多只提供python2的。
或者是即使提供了python3的,但是也不一定很成熟。
二、编码对比
在 python 中,不论是 python2 还是 python3 中,总体上说,字符都只有两大类:
通用的 unicode 字符;
(unicode 被编码后的)某种编码类型的字符,比如 utf-8,gbk 等类型的字符。
python2 中字符的类型:
str: 已经编码后的字节序列
unicode: 编码前的文本字符
python3 中字符的类型:
str: 编码过的 unicode 文本字符
bytes: 编码前的字节序列
我们可以认为字符串有两种状态,即文本状态和字节(二进制)状态。python2 和 python3 中的两种字符类型都分别对应这两种状态,然后相互之间进行编解码转化。编码就是将字符串转换成字节码,涉及到字符串的内部表示;解码就是将字节码转换为字符串,将比特位显示成字符。
在 python2 中,str 和 unicode 都有 encode 和 decode 方法。但是不建议对 str 使用 encode,对 unicode 使用 decode, 这是 python2 设计上的缺陷。python3 则进行了优化,str 只有一个 encode 方法将字符串转化为一个字节码,而且 bytes 也只有一个 decode 方法将字节码转化为一个文本字符串。
python2 的 str 和 unicode 都是 basestring 的子类,所以两者可以直接进行拼接操作。而 python3 中的 bytes 和 str 是两个独立的类型,两者不能进行拼接。
python2 中,普通的,用引号括起来的字符,就是 str;此时字符串的编码类型,对应着你的 python 文件本身保存为何种编码有关,最常见的 windows 平台中,默认用的是 gbk。python3 中,被单引号或双引号括起来的字符串,就已经是 unicode 类型的 str 了。
对于 str 为何种编码,有一些前提:
python 文件开始已经声明对应的编码
python 文件本身的确是使用该编码保存的
两者的编码类型要一样(比如都是 utf-8 或者都是 gbk 等)
这样 python 解析器才能正确的把文本解析为对应编码的 str。
总体来说,在 python3 中,字符编码问题得到了极大的优化,不再像 python2 那么头疼。在 python3 中,文本总是 unicode, 由 str 类型进行表示,二进制数据使用 bytes 进行表示,不会将 str 与 bytes 偷偷的混在一起,使得两者的区别更加明显。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对php中文网的支持。
更多python 2与python 3版本和编码的对比相关文章请关注php中文网!