我今天在python cook book上看到了一段代码。
d={}
exec defining_code in d
我在终端上试了一下,它返回的结果震惊了我:
d={1:2}
exec 'print 1' in d
print d
{'__builtins__': {'bytearray': <type 'bytearray'>,
# Here I omitted hundreds of key-value pairs},
1:2}
这有点像'导入这个'吗?如果是,为什么设计师以这种形式制作它?如果这不是一招,它下面的机制是什么?
答案 0 :(得分:1)
来自exec声明中的Python docs:
作为副作用,除了与执行代码设置的变量名对应的字典之外,实现可以将附加键插入到给出的字典中。例如,当前实现可能会在 builtins (!)键下添加对内置模块 builtin 的字典的引用。