gpt4 book ai didi

python - 为什么键入变量(或表达式)会将值打印到标准输出?

转载 作者:IT老高 更新时间:2023-10-28 21:08:03 28 4
gpt4 key购买 nike

举个例子:

>>> 5+10
15
>>> a = 5 + 10
>>> a
15

Python 如何以及为什么在没有显式打印语句的情况下这样做?

如果我在 IPython 中做同样的事情单元格,只有最后一个这样的值实际上以这种方式打印在标准输出上:

In[1]: 5+10
1

Out[1]: 1

为什么会这样?

最佳答案

当 Python 处于“交互”模式时,它会启用某些在非交互模式下没有的行为。例如,sys.displayhook ,最初在 PEP 217 中指定.

If value is not None, this function prints it to sys.stdout, and saves it in __builtin__._.

sys.displayhook is called on the result of evaluating an expression entered in an interactive Python session.

您可以修改此行为:

>>> import sys
>>> def shook(expr):
... print(f'can haz {expr}?')
...
>>> sys.displayhook = shook
>>> 123
can haz 123?
>>> False
can haz False?
>>> None
can haz None?

并且也恢复正常:

>>> sys.displayhook = sys.__displayhook__
>>> 3
3

在默认的 Python repl 中,sys.displayhook

>>> import sys;
>>> sys.displayhook
<built-in function displayhook>

但在 IPython 中是

In [1]: import sys

In [2]: sys.displayhook
Out[2]: <IPython.terminal.prompts.RichPromptDisplayHook at 0x7f630717fa58>

这就是为什么您会看到 Python 和 IPython 之间的行为不同的原因。

关于python - 为什么键入变量(或表达式)会将值打印到标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54859437/

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