Python scoping in dict comprehension

2019-02-16 13:43发布

>>> x = 'foo'
>>> {0: locals().get('x')}
{0: 'foo'}
>>> {0: locals().get('x' + spam) for spam in ['']}
{0: None}

What is the reason for this discrepancy in behaviour?

1条回答
做自己的国王
2楼-- · 2019-02-16 14:19

Dict comprehensions and generator comprehensions create their own local scope. List comprehensions do not in Python 2.x, but do in Python 3. (Note that your first example is not a dict comprehension. It's just a literal dict that happens to have an expression as the value for the key 0.)

查看更多
登录 后发表回答