小编dir*_*iel的帖子

使用列表推导查找变量适用于globals()但不适用于locals().为什么?

我正在将项目从python 2.7更新到python 3.6.

我有一个列表理解,查找在python 2.7中工作的本地变量.当我切换到使用全局变量时,它只适用于python 3.6.

下面是一个说明问题的玩具示例.

相关代码是:

(A,B,C) = (1,2,3)
myvars = ['A','B','C']
Run Code Online (Sandbox Code Playgroud)

如果我执行以下代码:

[locals().get(var) for var in myvars]
Run Code Online (Sandbox Code Playgroud)

python 3.6中的返回值是:

[None, None, None]
Run Code Online (Sandbox Code Playgroud)

但是,python 2.7中的返回值是:

[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

如果我使用globals执行以下代码:

[globals().get(var) for var in myvars]
Run Code Online (Sandbox Code Playgroud)

然后我在python 2.7和3.6中得到相同的结果:

[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么使用locals()的代码不再适用于python 3.6?

python

10
推荐指数
2
解决办法
260
查看次数

标签 统计

python ×1