ホームページ >バックエンド開発 >Python チュートリアル >Python の `globals()`、`locals()`、`vars()` の違いは何ですか?

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-16 19:43:03652ブラウズ

What are the differences between `globals()`, `locals()`, and `vars()` in Python?

globals()、locals()、vars() の違いを理解する

はじめに:

Python の場合現在の名前空間を探索し、グローバル変数とローカル変数を操作することは、コードの動作をデバッグして理解するために必要になることがよくあります。 3 つの主要な関数: globals()、locals()、vars() は、それぞれ固有の特性と機能を持つこれらの名前空間へのアクセスを提供します。

globals()、locals()、および vars() の区別vars():

globals():

  • 常に、現在のモジュールの名前空間を表す辞書を返します。
  • グローバルに定義された変数とインポートされた関数へのアクセスを提供します。 modules.

locals():

  • 通常、関数内の現在の名前空間の辞書を返します。
  • キャプチャ呼び出し時のローカル変数の値。
  • 次の場合にのみ辞書を更新します。明示的に呼び出されるか、スタック フレーム属性である f_locals にアクセスするときに呼び出されます。

vars():

  • 引数が指定されていない場合は、locals( )、現在の名前空間を表す辞書を返します。
  • オブジェクトが引数として渡されると、そのオブジェクトの dict。クラス変数やモジュール グローバルなどの属性データが保存されます。

更新の影響:

行われた更新globals() または locals() によって返された辞書は、対応する名前空間に自動的に反映されません。逆に、名前空間の変更は辞書に自動的に反映されません。ただし、vars() を介して行われた更新は、オブジェクトの dict を直接変更し、その属性に影響します。

locals() の追加特性:

  • 関数の外で呼び出された場合、locals() は実際の名前空間辞書を返します。この辞書は、名前空間の変更を反映するために動的に更新されます。 namespace.
  • CPython (Python のデフォルト実装) では、exec "pass" 行が関数に含まれていない限り、locals() は代入後にローカル変数を自動的に更新しないことがあります。

結論:

globals()、locals()、および locals() の微妙な違いを理解するvars() は、Python 名前空間と効果的に対話するために重要です。各関数は、現在のスコープとグローバル スコープに対する明確なビューを提供し、開発者がコードの動作をより正確にトラブルシューティングおよび分析できるようにします。

以上がPython の `globals()`、`locals()`、`vars()` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。