我正在将项目从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 ×1