파이썬/기초 프로그래밍

Python에서 locals()로 함수의 로컬 영역 확인하기

Data Jun 2025. 9. 13. 10:20

파이썬을 공부하다 보면 스코프(scope) 라는 개념이 자주 등장합니다.
스코프란 변수나 함수가 유효하게 사용될 수 있는 영역을 말하는데,

크게 전역(Global) 스코프지역(Local) 스코프로 나뉩니다.

이번 글에서는 함수 내부의 로컬 변수를 확인하기 위해 locals()를 사용하는 방법을 살펴보겠습니다.

 

1. 예제 코드

def func(var):
    x = 10
    def printer():
        print('Ex6 > Printer Func Inner')
    print('Func Inner', locals())

func('Hi')

코드 분석

 

1️⃣ func(var) 함수 호출

  • 인자 var에 'Hi'가 들어갑니다.
  • 지역 변수 x = 10이 생성됩니다.
  • 내부 함수 printer()가 정의됩니다.

2️⃣ locals() 호출

  • locals() 함수는 현재 지역 스코프에 존재하는 이름들을 딕셔너리(dictionary) 형태로 반환합니다.
  • 따라서 func() 안에서 locals()를 호출하면 func()의 지역 변수들이 출력됩니다.

실행 결과

Func Inner {'var': 'Hi', 'x': 10, 'printer': <function func.<locals>.printer at 0x7f...>}
  • var: 매개변수 값 → 'Hi'
  • x: 함수 내부에서 선언된 변수 → 10
  • printer: 내부에서 정의된 함수 객체 → <function ...> 형태로 표시

즉, locals()를 이용하면 현재 함수 안에서 정의된 모든 지역 변수와 내부 함수를 한눈에 확인할 수 있습니다.

 

2. 활용 포인트

  • 디버깅(Debugging)
    로컬 스코프에 어떤 값들이 존재하는지 빠르게 확인할 수 있어 문제 해결에 유용합니다.

 

3. 주의할 점

  • locals()는 읽기 전용처럼 보이지만, 반환된 딕셔너리를 수정한다고 해서 실제 지역 변수 값이 항상 바뀌는 것은 아닙니다.
  • 따라서 변수 조작보다는 확인 및 디버깅용으로 쓰는 것이 안전합니다.

 

 

정리하면

  • locals()는 현재 함수의 지역 스코프 정보를 딕셔너리로 반환한다.
  • 함수 내부 변수와 내부 함수까지 모두 확인 가능하다.
  • 주로 디버깅이나 스코프 학습용으로 사용하면 유용하다.