[python] 변수 scope, LEGB Rule

LEGB Rule

  • 파이썬 변수 scope 룰을 LEGB 룰이라고 불리기도 합니다.
  • 변수가 값을 찾을 때, Local -> Enclosed -> Global -> Built-in
  • local - 가장 가까운 함수안 범위 입니다.
  • Enclosed - 파이썬은 함수 안에 함수가 정의 될수 있는데, 가장 가까운 함수가 아닌 두번째 이상의 함수 가까운 함수범위입니다.
  • Global - 함수 바깥의 변수 또는 import된 module
  • Built-in - 파이썬안에 내장되어 있는 함수 또는 속성들입니다.
>>> a = 5    # Global
>>> b = 10   # Global
>>> def outer():
...     a = 10  # outer함수의 local이며, inner함수의 Enclosed
...     def inner():
...             c=30 # inner 함수의 local
...             print(a, b, c)
...     inner()
...     a = 22  # outer함수의 local이며, inner함수의 Enclosed
...     inner()
... 
>>> outer()
10 10 30  
22 10 30