使用locals()的Python词典理解给出KeyError

发布于 2021-01-29 18:33:01

>>> a = 1
>>> print { key: locals()[key] for key in ["a"] }
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <dictcomp>
KeyError: 'a'

如何创建具有这种理解力的字典?

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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}
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看