1. ホーム
  2. python

[解決済み] Pythonの文字列は不変ではないのですか?では、なぜ a + " + b はうまくいくのでしょうか?

2022-08-06 15:06:51

質問

Pythonの文字列はイミュータブル(不変)であると理解しています。

以下のコードを試してみました。

a = "Dog"
b = "eats"
c = "treats"

print a, b, c
# Dog eats treats

print a + " " + b + " " + c
# Dog eats treats

print a
# Dog

a = a + " " + b + " " + c
print a
# Dog eats treats
# !!!

Pythonは割り当てを防ぐべきではなかったのでしょうか?私はおそらく何かを見逃しています。

何か心当たりはありますか?

どのように解決するのですか?

まず a は文字列 "Dog"を指しました。 次に、変数 a を新しい文字列 "Dog eats treats"を指すように変更しました。 実際には文字列 "Dog"を変異させたわけではありません。 文字列は不変であり、変数は好きなものを指すことができます。