我遇到了一个奇怪的情况。我想检查我的变量x, y, 是否z存在。
为此,我尝试了:
>>> [var in locals() for var in ["x", "y", "z"]]
[False, False, False]
Run Code Online (Sandbox Code Playgroud)
然后,我给你x,y,z一些值:
>>> x, y, z = 1, 2, 3
Run Code Online (Sandbox Code Playgroud)
尽管如此,我仍然有:
>>> [var in locals() for var in ["x", "y", "z"]]
[False, False, False]
Run Code Online (Sandbox Code Playgroud)
但是 x, y, z 一一存在:
>>> for var in ["x", "y", "z"]:
... print(var in locals())
...
True
True
True
Run Code Online (Sandbox Code Playgroud)
有人有解释吗?
请参阅:https : //portingguide.readthedocs.io/en/latest/comprehensions.html
在 Python 3 中,列表表达式有自己的作用域:它们是函数,只是用特殊的语法定义,并自动调用。因此,迭代变量不会“泄漏”:
在理解之外引用 locals()
>>> my_locals = locals()
>>> [var in my_locals for var in ["x", "y", "z"]]
[True,True,True]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |