dict理解具有 自己的名称空间 ,而locals()
在该名称空间中没有a
。从技术上讲,除最外层可迭代对象(此处["a"]
)之外的所有其他内容,几乎都是作为嵌套函数运行的,最外层可迭代对象作为参数传递。
如果您globals()
改用了代码,或者在dict理解 之外 创建了对locals()
字典的引用,那么您的代码将起作用: __
l = locals()
print { key: l[key] for key in ["a"] }
演示:
>>> a = 1
>>> l = locals()
>>> { key: l[key] for key in ["a"] }
{'a': 1}
>>> { key: globals()[key] for key in ["a"] }
{'a': 1}