変数に値を代入する際の参照渡し
Python 言語では、オブジェクトは参照によって渡されます。値を割り当てるときは、オブジェクトが新しく作成されたものであるか、すでに存在しているものであるかに関係なく、オブジェクトの参照 (値ではなく) が変数に割り当てられます。
メモリ内のオブジェクトを追跡するために、Python は参照カウントと呼ばれる単純な手法を使用します。言い換えれば、Python は使用中の各オブジェクトが持つ参照の数を内部的に記録します。参照カウンターと呼ばれる内部追跡変数。各オブジェクトが持つ参照の数。参照カウントと呼ばれます。オブジェクトが作成されると参照カウントが作成され、オブジェクトが不要になると、つまりオブジェクトの参照カウントが 0 になると、オブジェクトはガベージ コレクションされます。
オブジェクトが作成され、(オブジェクトへの参照が) 変数に割り当てられると、オブジェクトの参照カウントは 1 に設定されます。同じオブジェクト (参照) が別の変数に割り当てられている場合、関数、メソッド、クラス インスタンスにパラメーターとして渡されている場合、またはウィンドウ オブジェクトのメンバーとして割り当てられている場合、オブジェクトへの新しい参照、またはエイリアスとして割り当てられている場合、オブジェクトが作成されます (オブジェクトの参照カウントは自動的に 1 ずつ増加します)。
オブジェクトへの参照が破棄されると、参照カウントが減ります。最も明白な例は、参照がそのスコープを離れるときであり、これはほとんどの場合関数の終わりで発生し、すべてのローカル変数が自動的に破棄され、オブジェクトの参照カウントが減ります。変数が別のオブジェクトに割り当てられると、元のオブジェクトの参照カウントが自動的に 1 ずつ減らされます。オブジェクトの参照カウントを減少させる他の方法には、del ステートメントを使用して変数を削除する場合や、オブジェクトがウィンドウ オブジェクトの外に移動された場合 (またはコンテナ オブジェクト自体の参照カウントが 0 になった場合) が含まれます。
上記の例では、ステートメント id( により、 a = 1 は変数 a が整数オブジェクト 1 を指すようにし、b = a は変数 b も整数オブジェクト 1 を指すようにします。 a)、id(b)より、変数aと変数bが指すメモリアドレスが同じであることが分かります。ステートメント a = 2 は、新しいオブジェクト 2 を変数 a に代入します。このとき、変数 a はオブジェクト 2 を指し、変数 b は依然として元のオブジェクト 1 を指します。ステートメント id(a) と id(b) を見ると、変数 a と b が指すメモリ アドレスが異なることがわかります。
以上がPythonで参照を使用して変数を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。