为什么在Python中不推荐使用MutableString?

fjs*_*jsj 19 python string mutable deprecated python-3.x

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

Ros*_*ron 26

MutableString课程旨在教育,而不是用于真正的课程.如果你看一下实现,你会发现你不能在需要可变字符串的严肃应用程序中真正使用它.

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

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

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


Bri*_*man 5

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