파이썬을 공부하다 보면 스코프(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()는 현재 함수의 지역 스코프 정보를 딕셔너리로 반환한다.
- 함수 내부 변수와 내부 함수까지 모두 확인 가능하다.
- 주로 디버깅이나 스코프 학습용으로 사용하면 유용하다.
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
| Python 익명 함수(lambda) vs 일반 함수(def) (0) | 2025.09.13 |
|---|---|
| Python globals()로 동적 전역 변수 만들기 (0) | 2025.09.13 |
| Python 함수 내 전역 변수(Global Variable) 사용하기 (0) | 2025.09.13 |
| Python 동시성 프로그래밍: concurrent.futures 실습 (0) | 2025.09.09 |
| 파이썬 concurrent.futures에서 Future 객체의 Wait 다루기 (0) | 2025.09.09 |