파이썬 키워드들 중 'global'과 'nonlocal'은 파이썬의 "변수의 범위" 를 다룰 때 등장합니다. 즉, 어떤 변수에 접근하거나 수정할 때 "이 변수가 어디에 있는지"를 정하는 키워드 입니다.
1. 변수 범위 리뷰
본격적으로 들어가기 전에, 스코프(scope)는 변수에 접근할 수 있는 프로그램의 범위를 의미한다는 것을 기억하세요.
- 지역 스코프(Local scope): 함수 안에서
- 전역 스코프(Global scope): 모든 함수 바깥에서
- 포함 스코프(Enclosing scope): 다른 함수 안에 있는 함수에서
2. global 키워드
'global' 키워드는 현재 함수 바깥, 특히 전역 스코프(global scope)에 있는 변수를 수정할 때 사용합니다.
보통 함수 안에서 변수를 할당하면 지역 변수(local variable)가 새로 만들어집니다. 만약 모듈 수준(전역)에 이미 존재하는 변수를 수정하고 싶다면, 해당 변수를 global로 선언해야 합니다.
예제 1:
x = 10
def change_global():
global x
x = 20
change_global()
print(x) # Output: 20
예제 2:
counter = 0
def increment():
global counter
for _ in range(5):
counter += 1
increment()
print(counter) # Output: 5
예제 3:
flag = False
def activate():
global flag
flag = True
activate()
print(flag) # Output: True
비록 x, counter, flag가 함수 바깥에서 정의되었더라도, global 키워드를 사용하면 함수 안에서 이들의 값을 변경할 수 있습니다.
만약 global 키워드를 사용하지 않으면, 파이썬은 이 변수들을 새로운 지역 변수(local variable)로 취급하게 됩니다.
3. nonlocal 키워드
nonlocal 키워드는 중첩 함수(nested functions)에서 사용됩니다. 이 키워드를 사용하면 전역이 아닌, 바로 바깥 함수(enclosing scope)에 있는 변수를 수정할 수 있습니다. 이는 내부 함수(inner function)에서 외부 함수(outer function)의 변수를 업데이트하고 싶을 때 유용합니다.
예제 1:
def outer():
y = 5
def inner():
nonlocal y
y = 10
inner()
print(y) # Output: 10
outer()
예제 2:
def outer():
msg = "Hello"
def inner():
nonlocal msg
msg += ", World!"
inner()
print(msg) # Output: Hello, World!
outer()
예제 3:
def counter_maker():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
c = counter_maker()
print(c()) # Output: 1
print(c()) # Output: 2
이 모든 예제에서, 내부 함수는 nonlocal 키워드를 사용하여 외부 함수의 변수를 수정합니다. 만약 변수를 nonlocal로 선언하지 않았다면, 이런 수정은 불가능했을 것입니다.
'Language' 카테고리의 다른 글
Python Class 문법 완벽 가이드 (0) | 2025.04.27 |
---|---|
파이썬 초보를 위한 리스트와 NumPy Array 차이 쉽게 이해하기 (0) | 2025.04.23 |
파이썬 mutable과 immutable 변수들 (0) | 2025.04.19 |
Python map() 함수의 개념과 딥러닝 머신러닝 분야 활용법 (0) | 2025.04.19 |
Python Lambda() 함수: 생성 이유, 유익함, 그리고 DL/ML 개발에서의 활용 (0) | 2025.04.19 |