<요약> LEGB는 변수 이름이 검색되는 순서를 나타냄.
- L (Local): 현재 함수 내에서 정의된 변수.
- E (Enclosing): 중첩된 함수의 바깥쪽 함수에서 정의된 변수.
- G (Global): 모듈 전체에서 정의된 변수.
- B (Built-in): Python 내장 함수나 객체.
def my_function():
x = 10 # Local 변수
print(x)
my_function() # 출력: 10
def outer_function():
x = 20 # Enclosing 변수
def inner_function():
print(x) # Enclosing 범위에서 x를 검색
inner_function()
outer_function() # 출력: 20
x = 30 # Global 변수
def my_function():
global x
x = 40 # Global 변수 변경
print(x)
my_function() # 출력: 40
print(x) # 출력: 40
def my_function():
print(len("Python")) # Built-in len 함수 사용
my_function() # 출력: 6
파이썬은 변수를 검색할 때 다음 순서로 진행됨
1. Local (현재 함수 내)
2. Enclosing (바깥쪽 함수)
3. Global (모듈 레벨)
4. Built-in (파이썬 내장 영역)
동일한 이름의 변수가 여러 범위에 걸쳐 정의되어 있을 경우, 가장 가까운 범위의 변수가 사용됨.
x = 50 # Global 변수
def outer_function():
x = 40 # Enclosing 변수
def inner_function():
x = 30 # Local 변수
print(x) # Local 변수를 참조
inner_function()
outer_function() # 출력: 30
print(x) # 출력: 50
