20

为什么在 Python 2.6 中不推荐使用MutableString类;
为什么它在 Python 3 中被删除了?

4

2 回答 2

26

MutableString课程旨在具有教育意义,而不是在实际程序中使用。如果您查看实现,您会发现您不能在需要可变字符串的严肃应用程序中真正使用它。

如果您需要可变字节串,您可以考虑使用bytearrayPython 2.6 和 3.x 中提供的。每次修改旧字符串时,该实现都不会创建新字符串,因此它更快且更实用。它还正确地支持缓冲区协议,因此它几乎可以在任何地方用来代替普通的字节串。

如果您真的不打算通过索引对单个字符串进行多次修改,那么通过创建新字符串来修改普通字符串应该适合您(例如通过str.replace,str.formatre.sub)。

没有可变的 unicode 字符串,因为这被认为是一个不常见的应用程序,但您始终可以在您的自定义序列类型上实现__unicode__(或__str__对于 Python 3)和encode方法来模拟一个。

于 2011-01-10T20:55:44.580 回答
5

我猜是因为字符串不应该是可变的。毕竟,主要目的是“教育”。如果您需要更改字符串,请使用字符串列表或StringIO

于 2011-01-10T20:53:03.087 回答