Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 변수 스코프의 기본 규칙, LEGB 한 번에 이해하기

파이썬에서 변수를 찾는 순서, 즉 스코프(scope) 규칙을 이해하면 코드를 훨씬 명확하게 작성할 수 있습니다. Mark Lutz의 저서 『Learning Python』에서는 이 규칙을 쉽게 기억할 수 있는 암기법으로 LEGB를 소개합니다.

LEGB란 무엇인가?

LEGB는 파이썬이 변수 이름을 검색하는 순서를 나타내며, 가장 좁은 범위에서 가장 넓은 범위로 확장됩니다.

L — Local (지역)

함수 내부에 정의된 변수를 의미합니다. 함수가 호출될 때 생성되며, 해당 함수 안에서만 접근할 수 있습니다.

E — Enclosing (둘러싸는 범위)

바깥쪽 함수가 내부 함수를 감싸고 있을 때, 그 바깥 함수의 지역 범위에 정의된 변수를 말합니다. 주로 중첩 함수(nested function)나 클로저(closure)에서 사용됩니다.

G — Global (전역)

파일이나 모듈의 최상위 레벨에서 정의된 변수입니다. 모듈 전체에서 접근할 수 있습니다.

B — Built-in (내장)

파이썬 인터프리터가 시작될 때 미리 로드되는 이름들입니다. print, len, range 같은 내장 함수와 예외 클래스들이 여기에 해당합니다.

변수 검색 순서 예시

x = "global"          # G: 전역

def outer():
    x = "enclosing"   # E: 둘러싸는 범위
    def inner():
        x = "local"   # L: 지역
        print(x)      # local 출력
    inner()

outer()
print(x)              # global 출력

파이썬은 변수를 참조할 때 L → E → G → B 순서대로 검색하고, 가장 먼저 찾은 값을 사용합니다. 어디에도 없으면 NameError가 발생합니다.

정리

LEGB 규칙만 기억해도 파이썬에서 변수가 어디서 왔는지, 어떤 값이 참조되는지 명확하게 예측할 수 있습니다. 특히 중첩 함수나 클로저를 다룰 때 이 규칙을 이해하고 있으면 디버깅 시간을 크게 줄일 수 있습니다.