[Python] 변수의 액세스 범위(Scope)

HAHAHELLO·2025년 8월 1일

파이썬

목록 보기
49/50

변수의 액세스 범위(Scope)은 어디서 변수를 읽고 쓸 수 있는지를 결정하는 중요한 개념이다.

파이썬은 이 규칙을 LEGB 룰에 따라 처리한다.

기본 규칙: LEGB 룰

범위 종류의미예시
Local함수 내부에서 정의된 변수함수 안에서만 사용 가능
Enclosing중첩 함수의 바깥 함수에 있는 변수내부 함수에서 접근 가능
Global모듈(파일) 전체에서 정의된 변수함수 바깥에서 정의된 변수
Built-in파이썬이 제공하는 기본 함수와 변수len, print, range

1. Local

함수 내부에서 선언된 변수를 지역(Local) 변수라고 한다.

def my_func():
    x = 5
    print(x)

2. Enclosing

inner() 함수는 자신보다 바깥에 있는 outer() 함수의 변수 x를 사용할 수 있다.

def outer():
    x = 10
    def inner():
        print(x)  # Enclosing 영역의 x 사용
    inner()

outer()

nonlocal은 바로 바깥 함수의 변수를 수정할 때 사용한다.

def outer():
    x = 10
    def inner():
        nonlocal x
        x = 20
    inner()
    print("outer 내부 x =", x)

outer() # 출력: outer 내부 x = 20

3. Global

함수 외부에서 전역으로 선언된 변수를 Global 변수라고 한다.

x = 10  # Global 변수

def my_func():
    x = 5  # Local 변수
    print("함수 내부:", x)

my_func()
print("함수 외부:", x)

global 변수로 선언하면 함수 내부에서도 전역 변수에 접근하여 값을 변경할 수 있다. 함수 내부에서 같은 이름의 변수를 새로 만드는 것이 아니라, 바깥의 전역 변수를 참조 및 수정하게 된다.

x = 10

def change():
    global x
    x = 20

change()
print(x) # 20
profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글