프로그래밍 언어발행일 2023. 2. 14.원본 https://blog.naver.com/jword_/223015824211 ↗

파이썬 심볼테이블이란?

파이썬 심볼테이블이란? — #파이썬심볼테이블 AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다 파이썬 심볼테...

#Languages#Naver Blog

#파이썬심볼테이블

​

AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다

파이썬 심볼테이블

파이썬에 등장하는 심볼테이블에 대해 알아봅시다.

​

심볼테이블

심볼테이블에 대한 간단한 정의는 변수, 클래스, 메서드가 저장되는 공간으로 보시면 될 것 같습니다. 심볼테이블에는 지역심볼테이블, 전역심볼 테이블이 존재하는데 이 개념은 지역 변수, 전역변수와 동일합니다.

​

지역 심볼테이블

지역 심볼테이블을 확인하려면 해당 지역에서 locals( )메서드를 실행하면됩니다. 아래 예제를 함께 보겠습니다.

def inner(): a = 100 print(locals())​inner()
{'a': 100}

함수내(지역내)에 locals( ) 메서드를 사용하여 심볼테이블을 확인해보면, 위와 같은 결과가 출력됩니다.

​

해당 데이터는 딕셔너리 형태로 되어있음을 알 수 있습니다. 고로 심볼테이블은 딕셔너리 형태입니다.

​

전역 심볼테이블

전역 심볼테이블을 확인해 보겠습니다. globals( )메서드를 사용하면 됩니다. 전역 = 전체 영역이기 때문에, 지역에서 호출하든, 가장 외곽에서 호출하든 결과는 동일합니다.

def inner(): a = 100 print(globals())​inner()print(globals())
{'\_\_name\_\_': '\_\_main\_\_', '\_\_doc\_\_': None, '\_\_package\_\_': '', '\_\_loader\_\_': <\_frozen\_impo... }

직접 출력해보시면 알겠지만, 엄청 많은 데이터를 포함한 딕셔너리 자료가 나옵니다. 그리고 inner함수에서 호출하든, 그냥 호출하든 제일 밖에 있는 심볼테이블이 출력됩니다.

인터프리터가 변수를 찾는 방법

이미지

함수를 실행하면

함수를 실행하게 되면 함수 내부의 로컬 테이블이 생성된다. 그 안에 변수가 저장되는데 이는 지역변수로 보면된다.

​

이미지

안에서 밖으로

인터프리터가 변수를 만나면 심볼테이블에서 실제 값을 찾는다. 이때 심볼테이블의 보는 순서는, 변수가 등장한 로컬 심볼테이블, 둘러싼 로컬 심볼테이블 -> 다시 둘러싼 로컬 심볼테이블 ....-> ... -> 전역 심볼테이블 -> 내장 심볼 테이블 순이다.

​

제일 깊은 안쪽에서 가장 바깥쪽으로 변수를 찾고, 없을 경우 Error를 출력한다.

심볼테이블 저장형태

심볼테이블

심볼 테이블은 아래와 같은 형태로 값들이 저장되어있습니다.

이미지

변수의 이름과 데이터의 주소가 저장되어있습니다. 메서드나, 클래스 내부에서 지역심볼테이블이 생성 될 수 있습니다.

​