Python 的 exec 函数在 locals 参数中发送空字典时如何工作?

问题描述 投票:0回答:1

我编写了以下代码,尝试使用 exec() 来执行字符串中包含的代码。我传递一个空字典 d 作为 locals 参数。当我打印 d 时,正在 d 中创建本地命名空间。谁能帮我解释一下这是真的吗?

c = '''x = 1 
def __init__(self,n):self.name = n 
def printD(self):print(self.name)'''

d = {}
print(d)

exec(c,globals(),d)
print(d)
python exec
1个回答
0
投票

来自文档

如果

exec
获取两个单独的对象作为 globalslocals,则代码将像嵌入类定义中一样执行。

在类定义中,变量赋值会更新本地环境,而不是全局环境。所以你定义的名字会被放入字典中

d

如果您不通过

locals
字典,名称将在全局环境中定义。

© www.soinside.com 2019 - 2024. All rights reserved.