Python関数のスコープのLEGB順序を詳しく説明します。
ここでは、Python関数のスコープの検索手順を紹介します。
1.LEGBとは何ですか
L:local関数の内部作用領域
E:enclosing関数内部と埋め込み関数間
G:グローバルスコープ
B:build-in内蔵作用領域
2.LEGBは何をするものですか?
なぜこれを紹介しないといけないですか?それともそれらの役割は何ですか?
理由は私たちがPython関数を勉強している時に、しばしばドメインを定義する問題、変数全体、内部変数、内部埋め込み関数などがあります。Pythonはどうやって検索しますか?そしてPythonはどの順番で調べられますか?ここで順番を説明します。
3.順番は何ですか
名前と同じで、Pythonの関数内の検索は4種類に分けられています。LEGBとも言われています。この順序で探しています。
まず、localです。まず関数の内部を検索します。
次に、enclosingです。関数の内部と埋め込み関数の間を再検索します。
その次に、globalで、全体を探します。
最後に、build-in、内蔵作用領域です。
4.例を挙げて説明する
ex 1
ex 2
二つ目については、埋め込み関数に属していますが、関数の中でもう一つの関数を定義しても、まずlocal関数の中に定義があるかどうかを調べてから、関数の中に埋め込み関数が定義されているかを調べます。
以上が本文の全部です。皆さんの勉強に役に立ちたいです。
1.LEGBとは何ですか
L:local関数の内部作用領域
E:enclosing関数内部と埋め込み関数間
G:グローバルスコープ
B:build-in内蔵作用領域
2.LEGBは何をするものですか?
なぜこれを紹介しないといけないですか?それともそれらの役割は何ですか?
理由は私たちがPython関数を勉強している時に、しばしばドメインを定義する問題、変数全体、内部変数、内部埋め込み関数などがあります。Pythonはどうやって検索しますか?そしてPythonはどの順番で調べられますか?ここで順番を説明します。
3.順番は何ですか
名前と同じで、Pythonの関数内の検索は4種類に分けられています。LEGBとも言われています。この順序で探しています。
まず、localです。まず関数の内部を検索します。
次に、enclosingです。関数の内部と埋め込み関数の間を再検索します。
その次に、globalで、全体を探します。
最後に、build-in、内蔵作用領域です。
4.例を挙げて説明する
ex 1
passline = 60
def func(val):
if val >= passline:
print('pass')
else:
print('failed')
func(89)
''''''''''''
pass
[Finished in 0.2s]
''''''''''''
Python関数はまずlocalを検索します。局部変数のスコープにはpasslineの定義がありません。そして関数の内部に埋め込み関数がないことが分かりました。この時Pythonはglobalを探し始めます。大域でpasslineの定義を探して呼び出します。ex 2
def Max(val1, val2):
return max(val1, val2)
print(Max(90, 100))
'''''''''
100
[Finished in 0.1s]
'''''''''
Max関数では、直接に他の関数を呼び出します。呼び出したmax()は、関数が定義されていませんが、上記の4番目の種類に属しています。最後のステップがここにあります。二つ目については、埋め込み関数に属していますが、関数の中でもう一つの関数を定義しても、まずlocal関数の中に定義があるかどうかを調べてから、関数の中に埋め込み関数が定義されているかを調べます。
以上が本文の全部です。皆さんの勉強に役に立ちたいです。