Pythonの名前空間について詳しく解説

王林
リリース: 2023-06-09 21:10:35
オリジナル
3128 人が閲覧しました

Python は動的言語として、コードの実行時に定数、変数、関数などの名前付き環境を維持します。この環境は名前空間であり、名前空間とも呼ばれます。この記事ではPythonの名前空間について詳しく紹介します。

  1. ネームスペースの概要
    Python のネームスペースは、名前とオブジェクトの対応関係を格納する辞書です。名前は識別子 (識別子) を指し、オブジェクトはすべてのオブジェクトを指します。 Python では、整数、浮動小数点数、文字列、関数、クラスなどを含むすべてがオブジェクトです。
  2. 名前空間の分類
    Python の名前空間は次の 3 種類に分類できます。

(1) 組み込み名前空間 (Built-in Namespace)
組み込みの名前付けスペースは、Python インタープリターの起動時にロードされる名前空間です。組み込みの名前空間には、開発者が直接使用できる print()、type()、str() などのいくつかの関数と変数がデフォルトで含まれています。組み込みの名前空間には、builtins モジュールを通じてアクセスすることもできます。

(2) グローバル名前空間(Global Namespace)
グローバル名前空間とは、関数やクラスで定義されるのではなく、モジュールで定義される変数や関数などを指します。 1 つのモジュールで定義されたグローバル変数には、他のモジュールでもアクセスできます。モジュールにはグローバル名前空間が 1 つだけあり、モジュール内のすべての関数がこの名前空間にアクセスできます。

(3) ローカル名前空間(ローカル名前空間)
ローカル名前空間は、関数呼び出し時に作成される名前空間で、関数のローカル変数、パラメータ、一時変数などを格納するために使用されます。関数の呼び出しが終了すると、ローカルの名前空間も破棄されます。

  1. 名前空間検索ルール
    変数を使用する場合、Python はまずローカル名前空間で対応する変数を検索します。見つからない場合は、グローバル名前空間で検索し、最後に変数を検索します。組み込みの名前空間。つまり、Python はローカル、グローバル、組み込みの順に変数を検索しますが、この変数の検索順序を LEGB ルールと呼びます。
  2. 名前空間のスコープ
    Python では、各関数、モジュール、クラスには独自の名前空間があります。名前がオブジェクトにバインドされている場合、その名前はその名前空間内でのみ意味を持ちます。名前がローカル名前空間にバインドされている場合、その名前は関数内でのみ意味を持ちます。名前がグローバル名前空間にバインドされている場合、名前はモジュール内で意味を持ちます。名前が組み込み名前空間スペースにバインドされている場合は、モジュール内で意味を持ちます。 Python インタープリター全体で認識されます。
  3. globals() 関数と locals() 関数を使用して名前空間を取得する
    Python で globals() 関数と locals() 関数を使用して、対応するグローバル名前空間とローカル名前空間を取得できます。 globals() 関数はグローバル名前空間の辞書を返し、locals() 関数はローカル名前空間の辞書を返します。
  4. 名前空間に関する注意
    (1) 名前空間内の名前は、正当な識別子である必要があります。
    (2) 関数とクラスは新しい名前空間を作成します。
    (3) 変数名は、名前空間内の他のオブジェクトに再バインドできます。
    (4) global ステートメントを使用して、関数内の変数がグローバル変数を参照できるようにします。
    (5) 関数内の変数が外部関数のローカル変数を参照できるようにするには、非ローカル ステートメントを使用します。
    (6) Python の名前空間検索は LEGB ルールに基づいています。
  5. 結論
    この記事では、名前空間の概要、名前空間の分類、名前空間の検索ルール、名前空間のスコープ、globals() 関数と locals() 関数による名前空間の取得など、Python の名前空間について詳しく紹介します。 Python 初心者にとって、名前空間を理解することは、Python 言語を学習する上で重要なステップです。

以上がPythonの名前空間について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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