Pythonでの参照渡し
Pythonでは、複雑なオブジェクトを含む変数は参照によって渡されます。これは、 一つの変数に対して行われたすべての変更が、二つ目の変数にも反映されることを意味します。 このタイプの値の代入ではエラーが発生するリスクが増加しますが、 その代わりにOSのシステムメモリリソースが大幅に節約されます。
2つのリストがあるとします:
lst1 = [1, 2, 3, 4, 5]
lst2 = lst1
変数 lst2 に値 lst1 を代入したので、
コンピュータのメモリ内には1つのリストが格納されており、
2つの変数が同時にそれを参照しています。
lst2 の最初の要素を変更し、
最初のリストをコンソールに出力してみましょう:
lst2[0] = '!'
print(lst1) # ['!', 2, 3, 4, 5] を出力します
次のコードを実行した結果はどうなりますか:
lst1 = [1, 2, 3, 4, 5]
lst2 = lst1
lst2[0] = '!'
print(lst1)
次のコードを実行した結果はどうなりますか:
lst1 = [1, 2, 3, 4, 5]
lst2 = lst1
lst2[0] = '!'
print(lst2)
次のコードを実行した結果はどうなりますか:
lst1 = ['a', 'b', 'c', 'd']
lst2 = lst1
lst3 = 'e'
lst2[2] = lst3
print(lst2)