ホームページ > バックエンド開発 > Python チュートリアル > Python は参照渡しの動作をどのようにシミュレートしますか?

Python は参照渡しの動作をどのようにシミュレートしますか?

DDD
リリース: 2025-01-03 06:35:39
オリジナル
475 人が閲覧しました

How Does Python Simulate Pass-by-Reference Behavior?

Python での参照による変数の受け渡し

Python の引数は値によって渡され、呼び出された関数は元の変数のコピーを受け取ります。これは、関数が元の変数への参照を受け取り、それを直接変更できる参照呼び出しとは異なります。

可変変数と不変変数

Python では、一部のデータ型は変更可能 (リスト、辞書など) ですが、その他のデータ型は変更不可能 (文字列など) です。可変変数を渡す場合、関数はその内容を変更できますが、不変変数を渡す場合、関数はその内容を変更できません。

Python での値渡しの動作

例として、次のコードを考えてみましょう:

class PassByReference:
    def __init__(self):
        self.variable = 'Original'
        self.change(self.variable)
        print(self.variable)

    def change(self, var):
        var = 'Changed'
ログイン後にコピー

このクラスのインスタンスが作成されると、出力は次のようになります。 "オリジナル"。これは、「change」メソッドのパラメータ「var」が「variable」属性のコピーであり、メソッド内で「var」に加えられた変更がメソッド外の元の変数に影響を与えないためです。

参照渡し動作の回避策

Python は参照渡しを直接サポートしていませんが、これをシミュレートする回避策があります。

戻り値:

関数は変更された変数を返すことができ、その変数は関数の外で元の変数に割り当てることができます。

ラッパー クラスまたはリスト:

変更可能なラッパー クラスまたはリストは、変数を保持するために使用されます。ラッパーを関数に渡すことにより、関数は保持されている変数を変更でき、変更が返されるときにラッパーに反映されます。

結論

一方 Pythonは真の参照による呼び出しをサポートしていませんが、提供されている回避策を使用すると、開発者は可変データ型と不変データ型の両方でこの動作をシミュレートできるため、コード設計の柔軟性が向上します。

以上がPython は参照渡しの動作をどのようにシミュレートしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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