개념
파이썬이 변수에 값을 바인딩하거나 변수의 값을 참조하기 위해 사용되는 우선순위
local 먼저 찾고 ↓
1. Local : 함수 안
2. Enclosed function locals : 내부 함수에서 자신의 외부 함수의 범위(중첩함수 일때만)
3. Global : 함수 바깥 즉, 모듈 범위
4. Built-in : open, range와 같은 파이썬 내장 함수들을 의미
변수 참조 1) Local
a = 10
def child_func():
a = 20
return a
print(child_func())
# 20
child_func 함수 안이 Local 영역이고 여기서 가장 먼저 변수 찾음
변수 참조 2) Enclosed function locals
def parent_func():
a = 10
def child_func():
return a
return child_func()
print(parent_func())
# 10
첫번째 Local 영역에 참조할 수 있는 a가 없음
두번째인 Enclosed function locals에서 a = 10 발견
변수 참조 3) Global
a = 30
def parent_func():
def child_func():
return a
return child_func()
print(parent_func())
# 30
첫번째 Local 영역과 번째인 Enclosed function locals 영역에 모두 a값이 없기 때문에 세번째 영역인 Global을 확인하고 a = 30출력