파이썬 LEGB Rule

채채·2024년 12월 20일

Today I Learned

목록 보기
37/75

Python의 LEGB Rule

<요약> LEGB는 변수 이름이 검색되는 순서를 나타냄.

  • L (Local): 현재 함수 내에서 정의된 변수.
  • E (Enclosing): 중첩된 함수의 바깥쪽 함수에서 정의된 변수.
  • G (Global): 모듈 전체에서 정의된 변수.
  • B (Built-in): Python 내장 함수나 객체.
    LEGB Rule

1. L (Local):

  • 로컬 범위는 현재 실행 중인 함수 내부에서 정의된 변수들을 포함.
  • 함수 내부에서 변수 이름을 참조할 때 가장 먼저 검색되는 범위.
  • 함수 내부에서만 접근 가능하며, 함수 실행이 끝나면 메모리에서 제거됨.
def my_function():
    x = 10  # Local 변수
    print(x)

my_function()  # 출력: 10

2. E (Enclosing):

  • Enclosing 범위는 중첩 함수(함수 안에 정의된 함수)에서 바깥쪽 함수의 변수 범위를 가리킴.
  • 중첩 함수 내부에서 로컬 범위에 변수가 없으면, 바깥 함수의 변수를 검색.
def outer_function():
    x = 20  # Enclosing 변수

    def inner_function():
        print(x)  # Enclosing 범위에서 x를 검색
    
    inner_function()

outer_function()  # 출력: 20

3. G (Global):

  • 글로벌 범위는 모듈 전체에서 접근 가능한 변수들을 포함함.
  • 함수 외부에서 정의된 변수를 참조하며, 특정 모듈 안에서만 유효함.
  • 글로벌 변수를 함수 내에서 변경하려면 global 키워드를 사용해야함.
x = 30  # Global 변수

def my_function():
    global x
    x = 40  # Global 변수 변경
    print(x)

my_function()  # 출력: 40
print(x)       # 출력: 40

4. B (Built-in):

  • 빌트인 범위는 파이썬 내장 함수 및 객체들이 있는 최상위 범위.
  • len, print, range와 같은 함수들이 여기에 포함됩니다.
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

베이직반에서 파닥파닥 낚였던 예시문제

예시문제

profile
화이팅

0개의 댓글