【发布时间】:2016-06-11 16:45:22
【问题描述】:
如果我们比较python版本2和3中的bytes、str和unicode类型,我们可以看到
-
bytes类型的使用方式完全相同。 -
str类型的含义从bytes的别名更改为编码的 unicode 字符串(替换以前的unicode类型) -
unicode类型仅在 python 2 中使用,而在 python 3 中它被删除以支持重新定义str的含义
在编写应该与 python 2 和 python 3 兼容的代码时,最困难的任务之一是正确处理 unicode 字符串,因为没有一种类型可以在两个版本中工作。另一方面,处理字节数组很简单,因为在两个版本中都有一个bytes 类型。
据我了解,在 python 3 中引入类型 unicode 作为 str 的别名非常容易。这样,开发人员可以在两个版本中使用明确的类型名称。一旦不再需要 python 2 兼容性,将unicode 重构为str 将很简单。
这里的问题不是解决问题的最佳方法。我正在寻找的是为什么unicode 类型必须消失的解释。
【问题讨论】:
-
因为它本来就不应该存在。 Python 3000 是/曾经是关于修复错误。
-
是的,并不是每个人都相信添加它是一种更好的改变。
-
“在编写应该与 python 2 和 python 3 兼容的代码时……” 问:你确定这是一个合理的目标吗? 特别是关于 Unicode????
-
u前缀只是 Python 3 中的一个 noop - 它帮助人们编写 2/3 应用程序始终使用 unicode。谁反对?
标签: python python-2.7 python-3.x unicode