Python 変数はポインタですか?明確化
Python では、ポインターとしての変数の概念がしばしば混乱を引き起こします。変数がポインターと類似点を共有しているのは事実ですが、対処する必要がある根本的な違いがあります。
不変のデータ型と参照
指定した例では、次のようになります。
i = 5 j = i j = 3 print(i)
Python は整数などの基本データ型を次のように扱うため、3 の予想される結果は正しくありません。不変オブジェクト。新しい値を変数に割り当てると、新しいオブジェクトが作成され、変数は新しいオブジェクトにバインドされます。この場合、j は値 3 の新しい整数に再割り当てされても、i は値 5 の元の整数にバインドされたままになります。
可変データ型と参照
一方、リストのような可変データ型を扱う場合、状況は変更点:
i = [1,2,3] j = i i[0] = 5 print(j)
この場合、i と j は両方とも同じリスト オブジェクトにバインドされます。 i[0] = 5 を使用してリストを変更すると、変更は i と j の両方に反映されます。この動作は、リストのような変更可能なデータ型が参照によって渡されるという事実によるものです。つまり、i と j の両方がメモリ内の同じ共有オブジェクトへの参照を保持します。
結論
Python 変数は単なるポインターではありません。不変データ型の場合、オブジェクト自体への直接アクセスが提供されます。可変データ型の場合、これらは、複数の変数が同じ基になるオブジェクトにアクセスして変更できるようにする参照として機能します。この違いにより、Python プログラミングのパフォーマンスと柔軟性の両方が保証されます。
以上がPython 変数はポインタですか、それとも直接参照ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。