Python 08関数LEGBルール


LEGBルール
コンセプト
変数または参照変数の値に値をバインドするための優先度.
バインド(binding):特定の値を指定するプロセス
LEGBシーケンス
まず場所を探して↓
1.Local:関数
2.Enclosed function locals:内部関数から外部関数までの範囲(ネストされた関数の場合のみ)
3.グローバル:関数外、すなわちモジュール範囲
4.Built-in:open、rangeなどPython内蔵関数
例の理解
変数参照1)Local
a = 10

def child_func():
    a = 20
    return a

print(child_func())
# 20
  • child func関数内はローカル領域であり、変数
  • が最初に検索される.
    変数参照2)Enclosed function locals
    def parent_func():
        a = 10
        def child_func():
            return a
    
        return child_func()
    
    print(parent_func())
    # 10
  • の第1のローカル領域は、
  • を参照することができるaを有しない.
    2番目のEnclosed function localsではa=10
    変数リファレンス3)グローバル
    a = 30
    
    def parent_func():
        def child_func():
            return a
    
        return child_func()
    
    print(parent_func())
    # 30
  • 最初の地域と2番目のEnclosed関数この地域にはa値がないので、3番目の地域Global,a=30出力
  • をチェックする.