Python 2与Python 3版本和编码的对比

阅读次数:1559 次  |  发布时间:2019-02-04T00:00:00Z 

一、版本对比

首先要说的是,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 中,总体上说,字符都只有两大类:

  1. 通用的 Unicode 字符;
  2. (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 为何种编码,有一些前提:

  1. Python 文件开始已经声明对应的编码
  2. Python 文件本身的确是使用该编码保存的
  3. 两者的编码类型要一样(比如都是 UTF-8 或者都是 GBK 等)

这样 Python 解析器才能正确的把文本解析为对应编码的 str。

总体来说,在 Python3 中,字符编码问题得到了极大的优化,不再像 Python2 那么头疼。在 Python3 中,文本总是 Unicode, 由 str 类型进行表示,二进制数据使用 bytes 进行表示,不会将 str 与 bytes 偷偷的混在一起,使得两者的区别更加明显。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

最近发布的代码:

网上遇到数据平台系统延迟账号审核怎么处理? Python 程序  |  30次阅读  | 发布于:2020-07-29T17:47:44Z
list 等分 n 组 Python 程序  |  21次阅读  | 发布于:2020-06-27T22:56:55Z
斐波那契数列前n项 Python 程序  |  14次阅读  | 发布于:2020-06-27T22:56:39Z
提取完整文件名 Python 程序  |  13次阅读  | 发布于:2020-06-27T22:56:22Z
提取后缀名 Python 程序  |  20次阅读  | 发布于:2020-06-27T22:56:11Z
Python写文件 Python 程序  |  16次阅读  | 发布于:2020-06-27T22:56:01Z
with 读写文件 Python 程序  |  15次阅读  | 发布于:2020-06-27T22:55:29Z
判断是否为闰年 Python 程序  |  14次阅读  | 发布于:2020-06-27T22:55:19Z
年的日历图 Python 程序  |  13次阅读  | 发布于:2020-06-27T22:54:44Z
时间字符串转时间结构体 Python 程序  |  15次阅读  | 发布于:2020-06-27T22:54:30Z
时间结构体转指定格式时间字符串 Python 程序  |  11次阅读  | 发布于:2020-06-27T22:54:17Z
时间结构体转时间字符串 Python 程序  |  16次阅读  | 发布于:2020-06-27T22:54:05Z
浮点数转时间结构体 Python 程序  |  14次阅读  | 发布于:2020-06-27T22:53:28Z
使用time模块打印当前时间 Python 程序  |  18次阅读  | 发布于:2020-06-27T22:53:17Z
反转字符串 Python 程序  |  16次阅读  | 发布于:2020-06-27T22:52:57Z
replace 替换 Python 程序  |  16次阅读  | 发布于:2020-06-27T22:52:45Z
split 分割** Python 程序  |  11次阅读  | 发布于:2020-06-27T22:52:34Z
链式操作 Python 程序  |  15次阅读  | 发布于:2020-06-27T22:52:23Z
链式比较 Python 程序  |  12次阅读  | 发布于:2020-06-27T22:52:13Z
过滤器:函数通过 lambda 表达式设定过滤条件,保留 lambda 表达式为True的元素 Python 程序  |  8次阅读  | 发布于:2020-06-27T22:51:52Z
打包聚合各个可迭代对象的迭代器 Python 程序  |  12次阅读  | 发布于:2020-06-27T22:51:23Z
反向遍历数组 Python 程序  |  13次阅读  | 发布于:2020-06-27T22:51:04Z
创建range迭代器 Python 程序  |  16次阅读  | 发布于:2020-06-27T22:50:33Z
创建迭代器 Python 程序  |  14次阅读  | 发布于:2020-06-27T22:49:15Z
Python 的枚举对象 Python 程序  |  16次阅读  | 发布于:2020-06-27T22:49:04Z
一键查看对象所有方法 Python 程序  |  12次阅读  | 发布于:2020-06-27T22:48:49Z
证明object 是所有类的基类 Python 程序  |  14次阅读  | 发布于:2020-06-27T22:48:21Z
对象父子关系鉴定 Python 程序  |  10次阅读  | 发布于:2020-06-27T22:47:59Z
isinstance:判断object是否为classinfo的实例,是返回true Python 程序  |  17次阅读  | 发布于:2020-06-27T22:47:31Z
对象是否有某个属性 Python 程序  |  14次阅读  | 发布于:2020-06-27T22:47:11Z

最多阅读的代码

 Python 2与Python 3版本和编码的对比 Python 程序  |  1559次阅读
 python中执行shell的两种方法总结 Python 程序  |  1443次阅读
 将字符串与数据一起组成一个字符串 Python 程序  |  1322次阅读
 Python设置默认编码为utf8的方法 Python 程序  |  1273次阅读
 Python文件格式 Python 程序  |  1173次阅读
 使用C语言扩展Python程序的简单入门指引 Python 程序  |  1105次阅读
 Python编码类型转换方法详解 Python 程序  |  1104次阅读
 Python中为什么要用self探讨 Python 程序  |  976次阅读
 将字符串写入到文件中 Python 程序  |  973次阅读
 Python字符串格式化输出方法分析 Python 程序  |  880次阅读
 Python八进制字符吕转utf-8编码的中文 Python 程序  |  568次阅读
 Python中几种导入模块的方式总结 Python 程序  |  521次阅读
 python实现水仙花数 Python 程序  |  118次阅读
 使用正则多个分隔符分割字符串 Python 程序  |  97次阅读
 Python启动web服务的最快姿势 Python 程序  |  93次阅读
 python使用urllib下载文件 Python 程序  |  81次阅读
 打印99乘法表 Python 程序  |  74次阅读
 打印python之禅 Python 程序  |  72次阅读
 一行代码画爱心 Python 程序  |  71次阅读
 字符串转换为JSON Python 程序  |  70次阅读
 使用pickle存储对象 Python 程序  |  68次阅读
 发送各种类型邮件 Python 程序  |  65次阅读
 使用groupby将列表元素分类 Python 程序  |  63次阅读
 正则 调整文本格式 Python 程序  |  63次阅读
 使用装饰器计算函数运行时间 Python 程序  |  60次阅读
 使用sets计算交集和差集 Python 程序  |  58次阅读
 使用正则表达式提取文本 Python 程序  |  54次阅读