模块的私有符号表和函数的全局符号表

时间:2018-05-10 01:04:34

标签: python

阅读时 6. Modules,我遇到了

  

每个模块都有自己的私有符号表,它被模块中定义的所有函数用作全局符号表。因此,模块的作者可以在模块中使用全局变量,而不必担心与用户的全局变量的意外冲突。另一方面,如果您知道自己在做什么,则可以使用与其函数modname.itemname相同的表示法来触摸模块的全局变量。

模块的'私有符号表'和函数''全局符号表'让我感到困惑。

Symbol table: Wikipedia中,它显示为:

  

Python编程语言包括对创建和操作符号表的广泛支持。[2]可以查询的属性包括给定符号是自由变量还是绑定变量,是否为块作用域或全局作用域,是否已导入,以及它属于哪个名称空间。

似乎有点复杂。

如何理解私有和全局符号表,我可以打印它们吗?

按照PM 2Ring的评论,我创建了一个脚本:

#symbol_table.py
print(global())
$ python symbol_table.py
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10bddf278>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'symbol_table.py', '__cached__': None}

{'__name__': '__main__', '__doc__': None, '是否称为全局symble表?

0 个答案:

没有答案