Python 参照変数
Python では、変数に値を割り当てると、その値への参照が作成されます。ただし、 C などの言語とは異なり、Python 変数は実際の値自体を保持しません。代わりに、それらはメモリ内の別の場所に保存されたオブジェクトを参照します。
不変性の問題
次の Python コードを考えてみましょう。
<code class="python">y = 7 x = y x = 8</code>
実行後このコードでは、y は 7 のままですが、x は 8 になります。これは、x と y が異なるオブジェクトへの参照であるためです。 x に新しい値が割り当てられると、その値は y と同じオブジェクトを参照しなくなります。
C 参照変数と Python 参照
C では、参照変数は以下を提供します。変数を値で渡す代わりの方法です。参照変数は既存の変数のエイリアスです。つまり、参照される変数に加えられた変更は参照変数にも反映されます。
提供された C の例では、
<code class="cpp">int y = 8; int &x = y; x = 9;</code>
y と x は次のようになります。どちらも同じオブジェクトへの参照です。したがって、新しい値を x に代入すると、y の値も変更されます。
Python の制限
残念ながら、Python には次のような真の参照を作成する組み込みの方法がありません。 C.提供されたコードに示すように、変数を別の変数に代入して参照を作成しようとすると、異なるオブジェクトへの個別の参照が作成されます。
回避策
Python での C 参照の動作を理解するには、目的の値への参照として機能するカスタム クラスを作成できます。例:
<code class="python">class Reference: def __init__(self, val): self.value = val def get(self): return self.value def set(self, new_value): self.value = new_value # Usage: ref = Reference(7) x = ref.get() # x = 7 ref.set(8) # Both x and ref.get() will now be 8</code>
ただし、この方法は Python 参照の真の実装ではなく、回避策です。参照された値を変更するには、引き続き get() メソッドと set() メソッドを明示的に使用する必要があります。
以上がPython 変数が C 参照変数と異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。