globals()、locals()、vars() の違いを分析する
Python の名前空間操作の範囲内には、 3 つの必須関数: globals()、locals()、vars()。これらの関数はそれぞれ辞書を返しますが、根本的な違いについては詳しく調べる価値があります。
globals()
一貫して、globals() は、その名前空間を表す辞書を返します。現在のモジュール。このディクショナリには、そのモジュール内で定義されたすべてのグローバル変数、関数、およびクラスが保持されます。
locals()
globals() とは異なり、locals() は動的な動作を示します。 。関数内で呼び出されると、クロージャ変数からの変数を含む現在のローカル変数を含む辞書が返されます。ただし、この辞書は一時的なスナップショットです。 locals() の呼び出し、または現在のスタック フレームの f_locals 属性へのアクセスのみが、その内容の更新をトリガーします。 locals() 辞書またはそれに対応する変数への代入は相互更新されません。
vars()
Vars() も辞書を返しますが、その汎用性は優れています。モジュールと関数の名前空間を超えて拡張されます。引数なしで呼び出された場合、vars() は locals() と同様に動作し、現在の名前空間の辞書を返します。ただし、オブジェクトが引数として渡されると、vars() はそのオブジェクトの dict を調べてその属性を取得します。
更新と効果
locals() も vars() も、名前空間の変更に応じて辞書を自動的に最新の状態に保つことはありません。変数への代入はディクショナリを更新しません。また、逆に、ディクショナリへの変更は変数に反映されません。ただし、f_locals にアクセスする場合 (locals() の場合)、またはオブジェクトの dict にアクセスする場合 (vars() の場合)、辞書が更新される可能性があります。
In summary、globals()、locals()、vars() は、Python で名前空間を操作するための 3 つのツールを提供します。それらの違いを理解することで、開発者は Python のランタイム環境を正確かつ制御してナビゲートできるようになります。
以上がPython の globals()、locals()、vars() の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。