编程语言
首页 > 编程语言> > Python中的符号表

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