ホームページ  >  記事  >  バックエンド開発  >  Python 関数スコープの LEGB 順序

Python 関数スコープの LEGB 順序

高洛峰
高洛峰オリジナル
2017-03-02 16:47:001224ブラウズ

この記事ではPython関数のスコープの検索順序をご紹介しますので、具体的な内容は以下の通りです

1 LEGBとは?
L:ローカル関数内部スコープ
E:関数内部と組み込み関数の間を囲む
G:グローバルグローバルスコープ
B:ビルドイン組み込みスコープ

2.LEGB何に使用されますか?
なぜこれを導入する必要があるのでしょうか?またはその機能は何ですか?
その理由は、Python 関数を学習するときに、すべての変数、内部変数、および内部に埋め込まれた関数など、多くの定義ドメインの問題に遭遇するからです。パイソン検索?そして、Python はどのような順序で検索するのでしょうか?順序について説明します

3. 順序とは
Pythonの関数の検索はその名の通りLEGBと呼ばれる4種類に分かれており、この順序で検索されます。

まず、ローカルで、最初に関数内を検索します
次に、囲み、次に関数の内部と埋め込み関数の間で検索します(関数内で関数を再度定義することを意味します)
次に、グローバルであり、関数を検索します全世界
最後に、組み込みスコープです

4. たとえば、
ex1

passline = 60

def func(val):
  if val >= passline:
    print('pass')
  else:
    print('failed')

func(89)  

'''''''''''' 
pass
[Finished in 0.2s] 
''''''''''''

Python関数は、最初にローカルを検索します。ローカル変数のスコープを調べると、関数内に定義がないことがわかり、この時点で Python はグローバルの検索を開始し、グローバル内のパスラインの定義を見つけて呼び出されます。

ex2

def Max(val1, val2):
  return max(val1, val2)

print(Max(90, 100))

'''''''''
100
[Finished in 0.1s]
'''''''''

Max 関数は、max() と呼ばれる別の関数を直接呼び出します (2 つの関数の大文字と小文字は異なることに注意してください)。関数は定義されていませんが、それに属しています。これは、Python 標準ライブラリに組み込まれている関数であり、直接呼び出すことができます。最後のステップはここを見つけることになります

2番目のタイプに関しては、関数内で関数が再定義された場合でも、最初にローカル関数に定義があるかどうかを検索し、その後、関数を検索します。関数の中に埋め込み関数があるのですが、このタイプにはクロージャという特殊な用語があるので、ぜひ読んでみてください。

以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。

Python 関数スコープの LEGB 順序に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。