gaya_udonのブログ

学んだことを自分の言葉にすることで理解が深まると思ったので、ブログ開設しました。主にPythonについて学習したことを書こうと思います。

Python もし文字列型(str型)で要素の書き換えがでるとどうなるか?

こんにちは。
今回は文字列(str型)で要素の書き換えができるとどのようになるかについてです。
はじめに、文字列(str型)とリストはよく似ています。
そこで、forループで文字列を取り出してみようと思います。

#文字列(str型)
s = "hello"
for c in s:
    print(c)
h
e
l
l
o

#リスト
s = ["h","e","l","l","o"]
for c in s:
   print(c)
h
e
l
l
o

と、このようになります。
forループについてはどちらも問題なく動作しましたね。
次に、要素の書き換えをしてみます。

#リスト
s = ["h","e","l","l","o"]
s[0] = "k"
s
["k","e","l","l","o"]

#文字列(str型)
s = "hello"
s[0] = "k"
s
Traceback (most recent call last):
  File "<pyshell#40>", line 1, in <module>
    s[0] = "k"
TypeError: 'str' object does not support item assignment

はい。このようにリストを使った場合は要素の書き換えはできますが、文字列(str型)の場合はできないようになっています。
そこで、もし文字列(str型)で要素の書き換えができるようになるとどうなるのかを考えていきたいと思います。

メリット・・・  単純に変数に文字列を入れてミスした場合の修正が簡単になるのではないかなと思います。

デメリット・・・ 文字列の書き換えが出来るということはつまり、可変性を持つ型になり後の操作により文字列をコピーした際片方を操作した場合にもう片方も変わってしまうということになります。

結論・・・  文字列(str型)は変数名として文字列を使った場合(例えばresultなど)に文字列に可変性を持っていると変数として使えなくなるので不変性を持つ型なのかなと思いました。
ありがとうございました。