【发布时间】:2018-07-31 04:07:45
【问题描述】:
通常我使用_ 来访问 Python 交互式 shell 中的最后一个结果。尤其是快速将变量分配给我认为以后可能很重要的结果。
我最近发现的是,如果我在 for 循环中使用 _ 作为值,我将无法再使用 _ 来引用最后的结果。
例子:
>>> 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
如果我使用空白的 for 循环,那么 _ 在我删除它之前不能被视为最后一个结果,然后它就可以工作了。
如果我列出理解,虽然它似乎仍然可以正常工作:
>>> [1 for _ in range(10)]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> 120
120
>>> a=_
>>> a
120
所以我想我的问题是为什么?为什么会这样?为什么_ 有时可以更改,而不是最后的结果?
【问题讨论】:
-
列表推导不会泄漏python3中的控制变量。因此,您的
_不会泄漏到外部范围。但是,for 循环当然会泄漏变量
标签: python python-3.x