더북(TheBook)


2.3심벌 테이블


AST도 살펴보았으니 이제 심벌 테이블에 대해 이야기해 보겠습니다. 심벌 테이블(symbol table)은 변수나 함수의 이름과 그 속성에 대해 기술해 놓은 테이블입니다.

test.py를 보면 전역 영역(global)에 변수 a, b, c와 함수 func, print가 있는 것을 알 수 있습니다. 심벌 테이블을 확인해 보겠습니다.

>>> import symtable

>>> sym = symtable.symtable(s, 'test.py', 'exec')    #1

>>> sym.get_name()              #2

'top'

>>> sym.get_symbols()         #3

[<symbol 'func'>, <symbol 'a'>, <symbol 'b'>, <symbol 'c'>, <symbol 'print'>]


symtable() 함수를 이용해 테이블을 받아오고(#1) 이름을 확인합니다(#2). 이름이 'top'이라고 나오는데 이는 이 테이블이 글로벌 테이블이라는 의미입니다. 클래스 테이블이면 클래스 이름이 나오고, 함수 테이블이면 함수 이름이 나옵니다. 다음으로 get_symbols() 함수로 현재 영역에 있는 심벌을 확인합니다(#3).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.