Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの名前空間と変数のスコープを説明します。


名前空間は、スコープを実装する方法です。 Pythonでは、各パッケージ、モジュール、クラス、関数、およびメソッド関数は、変数名が解決される「名前空間」を所有しています。関数、モジュール、またはパッケージが評価される(つまり、実行が開始される)と、名前空間が作成されます。それを「評価コンテキスト」と考えてください。関数などの実行が終了すると、名前空間は削除されます。変数は削除されます。さらに、名前がローカル名前空間にない場合に使用されるグローバル名前空間があります。

各変数名はローカル名前空間(関数の本体、モジュールなど)でチェックされ、次にグローバル名前空間でチェックされます。

変数は通常、ローカル名前空間でのみ作成されます。グローバルステートメントと非ローカルステートメントは、ローカル名前空間以外の変数を作成できます。

変数を使用してその値をどこから取得するかを決定する場合は、スコープ解決が必要です。 Pythonでのスコープ解決は、LEGBルールに従います。

L、ローカル—関数(またはラムダ)内で何らかの方法で割り当てられ、その関数でグローバルとして宣言されていない名前。

E、Encloseing-function locals —静的に囲む関数(またはラムダ)のローカルスコープ内で、内側から外側に名前を付けます。

G、グローバル(モジュール)—モジュールファイルのトップレベルで、またはファイル内のdefでグローバルステートメントを実行することによって割り当てられた名前。

B、組み込み(Python)—組み込みの名前モジュールで事前に割り当てられた名前:open、range、SyntaxErrorなど


  1. Pythonの名前空間とスコープ

    Pythonでは、変数、関数、ライブラリ、モジュールなどを扱います。使用する変数の名前が、別の変数の名前として、または別の関数や別のメソッドの名前としてすでに存在している可能性があります。このようなシナリオでは、これらすべての名前がPythonプログラムによってどのように管理されているかを知る必要があります。これが名前空間の概念です。 以下は名前空間の3つのカテゴリです ローカル名前空間:プログラムによって宣言された関数と変数のすべての名前は、この名前空間に保持されます。この名前空間は、プログラムが実行されている限り存在します。 グローバル名前空間:この名前空間は、Pytho

  2. Python関数でグローバル変数を使用するにはどうすればよいですか?

    グローバルおよびローカルという用語は、スクリプトまたはプログラム内の変数の到達範囲に対応します。グローバル変数は、どこからでもアクセスできる変数です。ローカル変数には、そのフレーム内でのみアクセスできます。ローカル変数にグローバルにアクセスすることはできません。 グローバル変数は、関数の外部で定義および宣言され、どこでも使用できる変数です。 同じ名前の変数が関数のスコープ内で定義されている場合、その変数は関数内で指定された値のみを出力し、グローバル値は出力しません。 指定されたコードは、関数fooの内部と外部の両方でグローバル変数にアクセスする方法を示すように書き直されています。 例 #