Python 文字列可変性の幻想: A " " B
Python 文字列は不変であることで広く知られています。ただし、「 " b を含む、あなたが提供したコード例では、この基本的なプロパティについて疑問が生じます。この一見矛盾した動作の背後にある説明を詳しく見てみましょう。
変数の物語
文字列を変数 (a = "Dog" など) に割り当てると、メモリ内にその文字列への参照を作成するだけです。変数は文字列自体のコピーを所有または保持しません。むしろそれを指します。これは、Python における文字列の不変性の本質です。
新しいオブジェクトの魔法
あなたが言及したコードでは、" " b を書くと、不変ではありません。 a または b が指す文字列を変更します。代わりに、両方の文字列を連結した新しい文字列を作成します。この新しく作成された文字列は、元の文字列をそのまま残したまま、新しい参照に割り当てられます。
変数の再割り当て
ここで重要な点は、次のコード行です。
a = a + " " + b + " " + c
この行は、 a が以前に指した文字列を変更するのではなく、作成したばかりの新しい文字列を指すように a を再割り当てします。したがって、 a は連結された文字列「犬はおやつを食べる」を指しますが、元の「犬」文字列は変更されません。
結論
次のように見えるかもしれませんが、文字列「Dog」は変更されていますが、実際には、Python はプロセス全体を通じて新しい文字列を作成して割り当てています。文字列の不変性はそのまま維持され、文字列が作成されるとその内容は変更できなくなります。
以上がPython の文字列連結が文字列を変更しているように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。