20

Python 2.6 でMutableStringクラスが廃止されたのはなぜですか。
なぜPython 3で削除されたのですか?

4

2 に答える 2

26

このMutableStringクラスは教育用であり、実際のプログラムで使用するためのものではありませんでした。実装を見ると、変更可能な文字列を必要とする本格的なアプリケーションでは、これを実際に使用できないことがわかります。

変更可能なバイト文字列が必要な場合はbytearray、Python 2.6 および 3.x で利用可能なものを使用することを検討してください。この実装では、古い文字列を変更するたびに新しい文字列が作成されるわけではないため、はるかに高速で使いやすくなっています。また、バッファ プロトコルを適切にサポートしているため、通常のバイト文字列の代わりに実質的にどこでも使用できます。

単一の文字列をインデックスであまり変更しない場合は、新しい文字列を作成して通常の文字列を変更する方法が適切です (たとえばstr.replacestr.formatと を使用re.sub)。

これは一般的でないアプリケーションと見なされるため、変更可能な Unicode 文字列はありませんが、いつでも__unicode__(または__str__Python 3 の場合)encodeカスタム シーケンス タイプにメソッドを実装してエミュレートすることができます。

于 2011-01-10T20:55:44.580 に答える
5

文字列は変更可能ではないはずなので、推測しています。結局のところ、主な目的は「教育」でした。文字列を変更する必要がある場合は、文字列のリストまたはStringIOを使用します。

于 2011-01-10T20:53:03.087 に答える