gpt4 book ai didi

python - 为什么 "_"并不总是给我交互式 shell 中的最后结果

转载 作者:太空狗 更新时间:2023-10-29 20:22:21 25 4
gpt4 key购买 nike

通常我使用 _ 访问 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

所以我想我的问题是为什么?为什么会这样?为什么 _ 有时可以更改,而不是最后的结果?

最佳答案

原因很简单——试试看

[i for i in range(1000)]

然后访问 i - 你会看到 i 没有定义(它的范围在列表推导中 - 当你退出列表推导时,“没有 i”)。

这与 for 循环形成对比,其中 i 的范围不在实际的 for 循环内 - 因此您可以从外部访问它。

因此,如果我们转到您的案例(使用 _),如果定义了 _,就像使用常规 for 循环一样,那么您需要 del 它。如果您在列表推导中执行此操作,一旦列表推导结束,下划线将不再定义 - 这意味着它只是最后一个值

关于python - 为什么 "_"并不总是给我交互式 shell 中的最后结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51601457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com