globals()、locals()、vars() の違いを理解する
Python では、globals()、locals() 、および vars() は、現在のプログラムの名前空間についての洞察を提供する関数です。それらの違いを見てみましょう:
globals()
-
目的: グローバル名前空間の辞書を返します。
-
動作: 一貫性があり、常に名前空間を返します。現在のモジュールの辞書。
locals()
-
目的: 現在の名前空間を表す辞書を取得します。
-
動作: 動的、依存呼び出し元のコンテキスト。
-
関数内: 現在のローカル変数とクロージャ変数を含む辞書を返します。同じスタック フレーム内で複数の呼び出しを行うと、フレーム オブジェクトの f_locals 属性との関連付けにより、同じディクショナリが返されます。このディクショナリへの更新はローカル名前空間に反映されますが、ディクショナリに値を直接割り当てても、対応するローカル変数は変更されません。
-
関数の外側: として機能する実際のディクショナリを返します。現在の名前空間。この辞書への変更は名前空間と同期され、その逆も同様です。
vars()
-
目的: 受け入れますオブジェクトを引数として指定し、その dict 属性を返します。 object.
-
Behavior:
- 引数なしで、現在の名前空間の dict を返します (ローカルと同様) () 関数の外)。
- オブジェクトが提供されると、そのオブジェクトのオブジェクトを取得します。 __dict__。通常、その属性データが含まれます。
- 返された辞書の更新はオブジェクトの属性に影響し、逆に、オブジェクトの属性への変更は辞書に反映されます。
重要な注意:
の動作locals() と vars() は、Python のバージョンと実装によって異なる場合があります。 CPython 2.x では、locals() は「exec 'pass'」を使用すると動作が異なる可能性があります。
以上がPython の `globals()`、`locals()`、`vars()` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。