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}


