dict理解中的Python作用域
问题内容:
>>> x = 'foo'
>>> {0: locals().get('x')}
{0: 'foo'}
>>> {0: locals().get('x' + spam) for spam in ['']}
{0: None}
这种行为差异的原因是什么?
问题答案:
Dict理解和生成器理解创建了自己的局部作用域。列表推导在Python 2.x中不是,但在Python
3中是。(请注意,您的第一个示例不是dict推导。它只是一个文字dict,碰巧有一个表达式作为键0的值。)