Python中的符号表
作者:互联网
我们怎样才能看到python源代码的符号表?
我的意思是,Python在实际运行之前为每个程序创建一个符号表.所以我的问题是如何将符号表作为输出?
解决方法:
如果您询问生成字节码时使用的符号表,请查看symtable
模块.此外,Eli Bendersky的这两篇文章很有趣,而且非常详细:
Python Internals: Symbol tables, part 1
Python Internals: Symbol tables, part 2
在第2部分中,他详细介绍了一个可以打印出symtable描述的函数,但它似乎是为Python 3编写的.这是Python 2.x的一个版本:
def describe_symtable(st, recursive=True, indent=0):
def print_d(s, *args):
prefix = ' ' *indent
print prefix + s + ' ' + ' '.join(args)
print_d('Symtable: type=%s, id=%s, name=%s' % (
st.get_type(), st.get_id(), st.get_name()))
print_d(' nested:', str(st.is_nested()))
print_d(' has children:', str(st.has_children()))
print_d(' identifiers:', str(list(st.get_identifiers())))
if recursive:
for child_st in st.get_children():
describe_symtable(child_st, recursive, indent + 5)
标签:python,symbol-table 来源: https://codeday.me/bug/20191001/1837628.html