(*´ω`)str型は不変なので新しくidentityができあがる
【実行結果】
【解説】
まずはリストを空にしておき、そこに松田を追加する。
その前後のidentityは同じ。つまり変更がかかるということ。
次に文字列を松田からスーパー松田にすると
その前後のidentityは異なる。つまり新しい物ができたということ。
従ってリスト型は中身が変更できてしまうため変更前の状態が
変更後の状態になってしまう。たとえば変更前はさんがついていないのに
変更後は変更前のものもさんが付いているなど。
str型の場合は、中身が不変型なので新しい物ができる。そのため
変更前の物は残っており、きちんとさんがつかない状態で表示される。
【コード】
#リストの場合
names = list()
print('変更前のリストの内容:{}'.format(names))
print('変更前のlistのidentity:{}'.format(id(names)))
names = list()
print('変更前のリストの内容:{}'.format(names))
print('変更前のlistのidentity:{}'.format(id(names)))
names.append('松田')
print('変更後のリストの内容:{}'.format(names))
print('変更後のlistのidentity:{}'.format(id(names)))
print('変更後のリストの内容:{}'.format(names))
print('変更後のlistのidentity:{}'.format(id(names)))
#文字列の場合
name = '松田'
print('変更前の文字列の内容:{}'.format(name))
print('変更前のstrのidentity:{}'.format(id(name)))
name = 'スーパー' + name
print('変更後の文字列の内容:{}'.format(name))
print('変更後のstrのidentity:{}'.format(id(name)))
print('変更後の文字列の内容:{}'.format(name))
print('変更後のstrのidentity:{}'.format(id(name)))
print(' ∧ ∧ 新型コロナは人が作ったかもな')
print('( ゚Д゚)')
print('海と猫が好き')
print('( ゚Д゚)')
print('海と猫が好き')