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).