字典理解中的 Python 作用域

标签 python scoping locals

>>> 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/

相关文章:

c - 试图了解此 C 程序中静态和动态作用域之间的区别

JavaScript 作用域和闭包语法

ruby-on-rails - 无法使用 Cocoon(Rails 3)将变量发送到部分

python - 跨观测值和年份的运算返回 NaN

python - 生成距中心远大于 50 个单位但小于 250 个单位的随机坐标

python - Python如何在遇到它的声明之前知道有一个局部变量?

node.js - Jade 本地人空白

java - 在声明变量之前使用变量不是错误吗?

python - 如何获取Python变量注解?

python - 寻找一种同时循环遍历两个不同长度列表的优雅方法