Python 変数が C 参照変数と異なるのはなぜですか?

Susan Sarandon
リリース: 2024-10-21 17:22:03
オリジナル
668 人が閲覧しました

Why are Python Variables Different from C   Reference Variables?

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート