gpt4 book ai didi

python - 代码和解释器中的下划线有什么区别?

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

我在 Python 解释器中使用 _ 下划线,想试试它在代码中是否有相同的行为。我在代码中使用下划线作为“无关”变量,如下所示:

_, a = someFunction()

然后在解释器中获取最后存储的值,像这样:

>>> 2 + 2
4
>>> a = _
>>> a
4

现在我尝试执行以下示例代码:

for i in range(5):
2 + 1
a = _

print (a)

在解释器中以及用 Python 脚本编写并使用 python underscore.py 运行。
考虑到 _ 下划线将保存最后存储的值的行为,因为它没有被格式化为“无关”变量,预期结果将是 2 + 1 = 3,使 3 成为最后存储的值,然后使用 a = _ 将其保存到 a 变量中。

解释器的结果如下:

>>> for i in range(5):
... 2 + 1
... a = _
...
3
3
3
3
3
>>> print(a)
3

此结果按预期工作,而保存在 Python 脚本中并使用 python underscore.py 运行的相同代码的结果导致名称错误:

C:\Users\..\Python files>python underscore.py
Traceback (most recent call last):
File "underscore.py", line 3, in <module>
a = _
NameError: name '_' is not defined

当阅读错误时,_ 变量未定义听起来合乎逻辑,但是,虽然它可能与 Python 运行脚本的方式有关,但我只是想知道两者之间的区别这两种情况是使结果产生某种逻辑答案(当您使用这样的解释器一段时间后)还是名称错误?

所以不要误会我的意思,我确实知道 _ 符号在 Python 中的作用。我要问的是,为什么完全相同的代码在解释器中的行为与在终端中作为 Python 程序运行时的行为不同?

最佳答案

@Chris_Rands 的帮助下,对于任何觉得有趣的人我发现 Python 解释器使用 sys.displayhook 存储最后使用的值,更多信息 here .

sys.displayhook 根据在 交互式 Python session 中输入的表达式求值结果调用。这意味着它只会在解释器中有这种行为,而不是在终端中运行的 Python 脚本中。

关于python - 代码和解释器中的下划线有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55969361/

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