如果我们比较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
类型必须消失的原因的解释。
答案 0 :(得分:1)
Ignacio Vazquez-Abrams已经为您提出了问题的基本答案:
问:" ...为什么类型unicode必须消失"?
答:"因为它本来就不应该存在。 Python 3000是关于修复错误的。"
Wayne Werner详细说明:
答:" u前缀只是Python 3中的一个noop - 这有助于编写2/3应用程序的人总是使用unicode。谁反对?"
这引出了一个问题"问:为什么你正在尝试编写" Python 2和Python之间兼容的代码3""无论如何???那个 NOT 是必然要做的合理的事情。 Python 2和Python 3之间的不兼容性 NOT 是任意的 - 它们是 DELIBERATE 。 特别是关于" Unicode"!
这是Guido van Rossum完全重新思考的理由" Unicode"对于Python 3:
以下是您应该如何处理Unicode - 在任何新的,仅限Python 3.0的代码中 - 向前发展:
我希望有所帮助!