大家讲道理2017-04-18 09:25:15
b=a
は、b
が参照するオブジェクト a
a[:]
は a のコピーを作成するため、b=a[:]
は b
にこのコピーを参照させます。つまり、b
と a
は別のオブジェクトを参照しますが、これらは2 つのオブジェクトは等しい (同じではないが同等)
これが、表面的には両者に違いがないように見える理由ですが、前者の場合、b
または a
を変更すると、両方とも同じオブジェクトを参照しているため影響を受けます。後者は異なるオブジェクトを参照するため、相互に影響しません。 @hsfzxjy の例はこれを指摘するものであり、実験を行うことで違いを知ることができます。
私が回答した質問: Python-QA
PHP中文网2017-04-18 09:25:15
Pythonにはオブジェクトのアドレスを取得できるidという関数があります。これを出力してみると分かります。 Direct = は元のオブジェクトを参照する参照割り当てであり、[:] は新しいオブジェクト
を生成する再派生です。 リーリー