これはPythonを学ぶ2日目です(C ++といくつかのOOPの基本を知っています)。Pythonの変数に関して少し混乱しています。
これが私が現在それらをどのように理解しているかです:
Python変数は、オブジェクト(可変または不変)への参照(またはポインター?)です。のようなものがあるnum = 5
場合、不変オブジェクト5
はメモリ内のどこかに作成され、名前とオブジェクトの参照ペアnum
は特定の名前空間に作成されます。がある場合a = num
、何もコピーされませんが、両方の変数が同じオブジェクトを参照a
し、同じ名前空間に追加されます。
これは私の本「Pythonで退屈なものを自動化する」が私を混乱させるところです。初心者向けの本なので、オブジェクトや名前空間などについては触れておらず、次のコードを説明しようとしています。
>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42
それが提供する説明は、C ++の本の説明とまったく同じですが、オブジェクトへの参照/ポインターを扱っているので、私は満足していません。したがって、この場合、3行目では、整数が不変でspam
あるため、メモリ内の別の場所へのまったく新しいポインタ/参照が割り当てられていると思います。つまり、最初にポイントしていたメモリは変更されていません。したがって、でcheese
参照される最初のオブジェクトを参照していspam
ます。これは正しい説明ですか?