>>> x = 'foo'
>>> {0: locals().get('x')}
{0: 'foo'}
>>> {0: locals().get('x' + spam) for spam in ['']}
{0: None}
造成这种行为差异的原因是什么?
最佳答案
字典理解和生成器理解创建它们自己的本地范围。列表理解不在 Python 2.x 中,但在 Python 3 中。(请注意,您的第一个示例不是字典理解。它只是一个文字字典,恰好有一个表达式作为键 0 的值。)
关于字典理解中的 Python 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13117020/