global, nonlocal

김신영·2025년 5월 3일

Python

목록 보기
7/10
post-thumbnail

Python global vs nonlocal

globalnonlocal은 파이썬 함수 내부에서 변수의 범위(scope)를 제어할 때 사용하는 키워드입니다.


global

전역 변수(global variable)를 함수 안에서 읽고 수정할 수 있게 해줍니다.

x = 10

def modify():
    global x
    x = 20

modify()
print(x)  # 출력: 20
  • global x 없으면 함수 내부의 x는 지역변수로 간주되어 바깥의 x에 영향을 주지 않음.

nonlocal

바깥 함수(지역 범위)의 변수내부 함수에서 수정할 때 사용합니다. (중첩 함수에만 사용 가능)

def outer():
    x = 10
    def inner():
        nonlocal x
        x = 20
    inner()
    print(x)

outer()  # 출력: 20
  • nonlocal 없으면 inner()x는 새로운 지역변수가 되어 outer()x에 영향을 주지 않음.

요약 비교

키워드적용 대상 범위사용 위치목적
global모듈(전역) 범위함수 내부전역 변수 읽기/수정
nonlocal중첩 함수의 바깥 함수중첩 함수 내부지역변수(외부 함수의) 수정 가능하게

둘 다 변수의 스코프를 명확히 지정해주기 위해 쓰이는 도구입니다.
중첩 함수 쓰는 경우 아니면 nonlocal은 잘 안 쓰입니다.

Reference

https://www.daleseo.com/python-global-nonlocal/

profile
Hello velog!

0개의 댓글