Python の変数スコープの概念は、通常、LEGB ルールとして知られるルールを使用して表現されます。 LEGB の頭字語は、ローカル、エンクロージング、グローバル、および組み込みスコープを表します。
LEGB は、Python の 4 つのスコープ (ローカル、エンクロージング、グローバル、ビルトイン) を表す頭字語です。 これらのスコープは、Python がコード ブロック内で変数を見つけたときに変数を検索する順序を決定します。
注: Python は関数のローカル コード ブロック内の変数を探し始めます。そこに変数が存在しない場合は、Enclosed ブロックを探し始めます。つまり、その内部関数が外部関数に囲まれているかどうかを意味します。 そうであれば、外側の関数コード ブロックを調べます。囲まれたコード ブロックでその変数が見つからない場合、Python はグローバル空間で検索を開始します。つまり、どの関数の内側にもない変数を意味します。 これはすべての関数の外側で定義されます。 それがグローバル変数です。 それがグローバル空間にない場合、Python は組み込み空間で検索します。つまり、Python プログラムを実行すると、Python は自動的に組み込みライブラリをロードします。このライブラリにはいくつかの関数と変数があります。
したがって、ローカル、エンクローズド、グローバルで変数が見つからない場合、Python は最終的に Builtins のライブラリ Variable でそれらの変数を探します。
以下のコードスニペットを観察してください
Example:
a=100 #Global Variable
def fun1():
b=200 #Local variable for fun1(), (Non Local variable for fun2()
def fun2():
c=300 #Local variable for func2()
print(f'Global variable {a}')
print(f'Non Local variable {b}')
print(f'Local variable {c}')
print(f'Builins {__file__}')
fun2()
fun1()
Output
Global variable 100
Non Local variable 200
Local variable 300
Builins C:\Users\rahul\PycharmProjects\pythonProject4\test44.py