通常我_用来访问Python交互式shell中的最后一个结果.特别是为了快速将变量分配给结果,我认为以后可能会很重要.
我最近发现的是,如果我_在for循环中使用as作为一个值,我不能再用它_来引用最后的结果了.
例:
>>> for _ in range(10):
... pass
...
>>> 120
120
>>> a=_
>>> a
9
>>> _
9
>>> del _ # Now I can use _ to reference the last result again
>>> 120
120
>>> a=_
>>> a
120
Run Code Online (Sandbox Code Playgroud)
如果我使用空白for循环,那么_在我删除它之前不能被认为是最后的结果,然后它可以工作.
如果我列出理解虽然它似乎仍然工作正常:
>>> [1 for _ in range(10)]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> 120
120
>>> a=_
>>> a
120
Run Code Online (Sandbox Code Playgroud)
所以我猜我的问题是为什么?为什么会这样?为什么它_有时会被改变,以至于它不代表最后的结果?
原因很简单 - 尝试做
[i for i in range(1000)]
Run Code Online (Sandbox Code Playgroud)
然后访问i-你会看到我没有被定义(它的范围在列表理解范围内 - 当你退出列表理解时,那里"没有我").
这与for循环形成对比,在for循环中,i的范围不在实际的for循环中 - 因此您可以从外部访问它.
因此,如果我们转到你的情况(使用_),如果_被定义,就像使用常规for循环一样,那么你需要del它.如果你在列表理解中这样做,一旦列表理解结束,就不再定义下划线 - 这意味着它只是最后一个值
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |