Python は動的言語として、コードの実行時に定数、変数、関数などの名前付き環境を維持します。この環境は名前空間であり、名前空間とも呼ばれます。この記事ではPythonの名前空間について詳しく紹介します。
- ネームスペースの概要
Python のネームスペースは、名前とオブジェクトの対応関係を格納する辞書です。名前は識別子 (識別子) を指し、オブジェクトはすべてのオブジェクトを指します。 Python では、整数、浮動小数点数、文字列、関数、クラスなどを含むすべてがオブジェクトです。
- 名前空間の分類
Python の名前空間は次の 3 種類に分類できます。
(1) 組み込み名前空間 (Built-in Namespace)
組み込みの名前付けスペースは、Python インタープリターの起動時にロードされる名前空間です。組み込みの名前空間には、開発者が直接使用できる print()、type()、str() などのいくつかの関数と変数がデフォルトで含まれています。組み込みの名前空間には、builtins モジュールを通じてアクセスすることもできます。
(2) グローバル名前空間(Global Namespace)
グローバル名前空間とは、関数やクラスで定義されるのではなく、モジュールで定義される変数や関数などを指します。 1 つのモジュールで定義されたグローバル変数には、他のモジュールでもアクセスできます。モジュールにはグローバル名前空間が 1 つだけあり、モジュール内のすべての関数がこの名前空間にアクセスできます。
(3) ローカル名前空間(ローカル名前空間)
ローカル名前空間は、関数呼び出し時に作成される名前空間で、関数のローカル変数、パラメータ、一時変数などを格納するために使用されます。関数の呼び出しが終了すると、ローカルの名前空間も破棄されます。
- 名前空間検索ルール
変数を使用する場合、Python はまずローカル名前空間で対応する変数を検索します。見つからない場合は、グローバル名前空間で検索し、最後に変数を検索します。組み込みの名前空間。つまり、Python はローカル、グローバル、組み込みの順に変数を検索しますが、この変数の検索順序を LEGB ルールと呼びます。
- 名前空間のスコープ
Python では、各関数、モジュール、クラスには独自の名前空間があります。名前がオブジェクトにバインドされている場合、その名前はその名前空間内でのみ意味を持ちます。名前がローカル名前空間にバインドされている場合、その名前は関数内でのみ意味を持ちます。名前がグローバル名前空間にバインドされている場合、名前はモジュール内で意味を持ちます。名前が組み込み名前空間スペースにバインドされている場合は、モジュール内で意味を持ちます。 Python インタープリター全体で認識されます。
- globals() 関数と locals() 関数を使用して名前空間を取得する
Python で globals() 関数と locals() 関数を使用して、対応するグローバル名前空間とローカル名前空間を取得できます。 globals() 関数はグローバル名前空間の辞書を返し、locals() 関数はローカル名前空間の辞書を返します。
- 名前空間に関する注意
(1) 名前空間内の名前は、正当な識別子である必要があります。
(2) 関数とクラスは新しい名前空間を作成します。
(3) 変数名は、名前空間内の他のオブジェクトに再バインドできます。
(4) global ステートメントを使用して、関数内の変数がグローバル変数を参照できるようにします。
(5) 関数内の変数が外部関数のローカル変数を参照できるようにするには、非ローカル ステートメントを使用します。
(6) Python の名前空間検索は LEGB ルールに基づいています。
- 結論
この記事では、名前空間の概要、名前空間の分類、名前空間の検索ルール、名前空間のスコープ、globals() 関数と locals() 関数による名前空間の取得など、Python の名前空間について詳しく紹介します。 Python 初心者にとって、名前空間を理解することは、Python 言語を学習する上で重要なステップです。
以上がPythonの名前空間について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。