gpt4 book ai didi

python - 为什么在控制台中写入 stdout 会附加写入的字符数,在 Python 3 中?

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

我刚刚在 Python 控制台中使用 sys.stdout.write() 时,我注意到这会产生一些奇怪的输出。

对于每个 write() 调用,分别传递给函数的写入字符数将追加到控制台的输出中。

>>> sys.stdout.write('foo bar')例如导致foo bar7 被打印出来。

即使传递空字符串也会导致输出 0

这实际上只发生在 Python 控制台中,但在执行具有相同语句的文件时不会发生。更有趣的是,它只发生在 Python 3 上,而不会发生在 Python 2 上。

虽然这对我来说不是真正的问题,因为它只发生在控制台中,但我真的很想知道为什么它会这样。

我的 Python 版本是 Ubuntu 15.10 下的 3.5.1。

最佳答案

除了写出给定的字符串,write 还会返回字符数(实际上是字节数,试试 sys.stdout.write('へllö') ) 当 python 控制台将每个表达式的返回值打印到标准输出时,返回值附加到实际打印的值。

因为 write 没有附加任何换行符,所以它看起来像同一个字符串。

您可以使用包含以下内容的脚本来验证这一点:

#!/usr/bin/python
import sys

ret = sys.stdout.write("Greetings, human!\n")
print("return value: <{}>".format(ret))

这个脚本在执行时应该输出:

Greetings, human!
return value: <18>

文档中提到了此行为 here .

关于python - 为什么在控制台中写入 stdout 会附加写入的字符数,在 Python 3 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37047368/

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