Python の `globals()`、`locals()`、`vars()` の違いは何ですか?

Susan Sarandon
リリース: 2024-11-17 20:22:02
オリジナル
652 人が閲覧しました

What's the Difference Between `globals()`, `locals()`, and `vars()` in Python?

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

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