파이썬 변수의 유효범위 scope LEGB Rule
유효범위 규칙(Scope Rule): 변수에 접근 가능한 범위, 변수가 유효한 문맥(Contex)범위를 정하는 규칙
LEGB Rule
- 파이썬에서 이름 공간을 찾는 규칙을 LEGB Rule이라고 한다.
- Local : 함수 내 정의된 변수
- Enclosing Function Local : 함수를 내포하는 또 다른 함수 영역, 내부함수에서 자신의 외부 함수의 범위
- Global : 함수 영역에 포함되지 않는 모듈 영역
- Built-in : 내장 영역
- 변수가 함수 내에 정의되면 지역변수(Local) 변수가 되고, 함수 외부에 정의되면 모듈 전역(Global)변수가 된다.
예시
a = 10
def test():
a = 20
print(a)
test()
print(a)
답안은 20, 10 a라는 변수는 Local영역에 생성, 함수내에서 생성되는 a는 Global영역에 있는 a와는 다른 변수이다.
a = 10
def test() :
global a
a = 20
test()
print(a)
답안은 20 , test함수가 실행될 때 Global 영역에 있는 a의 값이 20으로 변경된다.
- 파이썬에서 어떤 변수가 값을 참조하는 경우 L, E, G, B 순으로 탐색한다.