为什么从python 3中删除了类型unicode

时间:2016-06-11 16:45:23

标签: python python-2.7 python-3.x unicode

如果我们比较python版本2和3中的类型bytesstrunicode,我们可以看到

  • 类型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类型必须消失的原因的解释。

1 个答案:

答案 0 :(得分:1)

  1. Ignacio Vazquez-Abrams已经为您提出了问题的基本答案:

    问:" ...为什么类型unicode必须消失"?

    答:"因为它本来就不应该存在。 Python 3000是关于修复错误的。"

  2. Wayne Werner详细说明:

    答:" u前缀只是Python 3中的一个noop - 这有助于编写2/3应用程序的人总是使用unicode。谁反对?"

  3. 这引出了一个问题"问:为什么你正在尝试编写" Python 2和Python之间兼容的代码3""无论如何???那个 NOT 是必然要做的合理的事情。 Python 2和Python 3之间的不兼容性 NOT 是任意的 - 它们是 DELIBERATE 特别是关于" Unicode"!

  4. 这是Guido van Rossum完全重新思考的理由" Unicode"对于Python 3:

  5. 以下是您应该如何处理Unicode - 在任何新的,仅限Python 3.0的代码中 - 向前发展:

  6. 我希望有所帮助!