为什么Python中MutableString被弃用?
为什么在Python 2.6中,MutableString类被弃用了;
而在Python 3中又被完全移除了呢?
2 个回答
5
我猜是因为字符串不应该被改变。毕竟,最主要的目的是“教育”。如果你需要修改字符串,可以使用字符串列表或者StringIO。
26
MutableString
类是为了教学目的而设计的,不是用来在真正的程序中使用的。如果你看看它的实现,就会发现它并不适合在需要可变字符串的严肃应用中使用。
如果你需要可变的字节字符串,可以考虑使用在 Python 2.6 和 3.x 中提供的 bytearray
。这个实现不会在每次修改旧字符串时都创建新的字符串,所以它运行得更快,也更实用。它还正确支持缓冲协议,因此几乎可以在任何地方替代普通的字节字符串。
如果你并不打算通过索引对单个字符串进行很多修改,创建一个新字符串来修改普通字符串就足够了(例如通过 str.replace
、str.format
和 re.sub
)。
没有可变的 Unicode 字符串,因为这被认为是一个不常见的应用,但你可以在自定义序列类型上实现 __unicode__
(或者在 Python 3 中使用 __str__
)和 encode
方法来模拟一个可变的 Unicode 字符串。