【发布时间】:2017-09-07 12:06:04
【问题描述】:
一个模块拥有一个字典来跟踪它的上下文,例如在某个执行点定义的名称。如果导入了module,则可以通过vars(module)(或module.__dict__)或通过调用模块本身中的locals 内置函数来访问此字典:
更新并返回一个表示当前本地符号表的字典。
但当我尝试从函数访问本地字典时,我发现自己有点困惑。仅包含以下内容的脚本的输出是一个空字典:
def list_locals():
print(locals())
list_locals()
但另一方面,如果脚本仅包含以下内容,则输出是预期的字典,包含 __name__、__doc__ 和其他模块级变量:
print(locals())
那么,locals 字典的内容是什么时候设置的呢?
另外,locals函数定义中的“更新”是什么意思?
【问题讨论】:
-
在模块级别尝试
print(locals() is globals()) -
@Chris_Rands 是的,这是我困惑的一部分。
标签: python namespaces symbol-table