小编Shu*_*uny的帖子

Python 2 和 3 中 vars() 在列表理解中的不同行为

我目前正在将脚本从 Python 2 转换为 Python 3。在调试它时,我偶然发现了两个版本之间行为不同的部分代码。然而,我无法解释这种差异。

这是一个再现器:

variable_1 = "x"
variable_2 = "y"
list_of_variables = ['variable_1', 'variable_2']
existing_variables = vars()

print([variable for variable in list_of_variables if variable in vars()])
print([variable for variable in list_of_variables if variable in existing_variables])
Run Code Online (Sandbox Code Playgroud)

Python 2.7.18 显示以下输出:

['variable_1', 'variable_2']
['variable_1', 'variable_2']
Run Code Online (Sandbox Code Playgroud)

而 Python 3.9.0 显示:

[]
['variable_1', 'variable_2']
Run Code Online (Sandbox Code Playgroud)

为什么第一个列表理解在 Python 3 中不起作用?为什么它在存储vars()变量内的内容时有效?

python scope python-3.x

4
推荐指数
1
解决办法
226
查看次数

标签 统计

python ×1

python-3.x ×1

scope ×1