为什么Python中MutableString被弃用?

20 投票
2 回答
6377 浏览
提问于 2025-04-16 09:44

为什么在Python 2.6中,MutableString类被弃用了;
而在Python 3中又被完全移除了呢?

2 个回答

5

我猜是因为字符串不应该被改变。毕竟,最主要的目的是“教育”。如果你需要修改字符串,可以使用字符串列表或者StringIO

26

MutableString 类是为了教学目的而设计的,不是用来在真正的程序中使用的。如果你看看它的实现,就会发现它并不适合在需要可变字符串的严肃应用中使用。

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

如果你并不打算通过索引对单个字符串进行很多修改,创建一个新字符串来修改普通字符串就足够了(例如通过 str.replacestr.formatre.sub)。

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

撰写回答