Pythonにおける代入と参照の違い
Pythonでは、代入と参照で意味と振る舞いが異なります。
代入とはあるオブジェクトの値を別のオブジェクトにコピーすることです。代入演算子(= )を使ってある変数に別の変数を代入した場合、それらは同じオブジェクトの値を参照します。つまり、もし一方の変数の値が変わると、もう一方の変数の値にもそれが影響して変化します。
例えば、
a = 5
b = a
print(a) # 输出:5
print(b) # 输出:5
a = 10
print(a) # 输出:10
print(b) # 输出:5
この例では、変数aに5が代入され、その後変数bにaが代入されます。変数aの値が10に変更されても、変数bの値は5のままであり、それらは異なるオブジェクトを参照しているため
参照とはオブジェクトを参照するポインターか参照です。変数が参照されると、変数は実際にはオブジェクトがメモリ内にある場所を参照しており、オブジェクトの値を参照しているわけではありません。複数の変数は同じオブジェクトを参照することができ、それはつまり同じオブジェクトの値を参照していることを意味します。その1つの変数の値が変更されると、そのオブジェクトを参照している他の変数の値もそれに応じて変更されます。
例えば
a = [1, 2, 3]
b = a
print(a) # 输出:[1, 2, 3]
print(b) # 输出:[1, 2, 3]
a.append(4)
print(a) # 输出:[1, 2, 3, 4]
print(b) # 输出:[1, 2, 3, 4]
この例では、変数aは1、2、3を含むリストを参照します。そして、変数bはaを参照としており、つまり同じリストオブジェクトを指していることを意味します。リストaに新しい要素4が追加されると、bもそれに応じて変更されます。
つまり、代入とはオブジェクトの値を別のオブジェクトにコピーすることであり、参照とは同じオブジェクトを指すポインタ、またはリファレンスのことです