Python 打印变量时sys.stdout.write和print之间的差异

Python 打印变量时sys.stdout.write和print之间的差异,python,python-3.x,Python,Python 3.x,我想了解sys.stdout.write和print方法(或函数?我应该称它们为函数还是方法?) 例如,下面的代码将打印11 a = str(1) sys.stdout.write (a) 但这将打印1 a = str(1) print (a) 为什么会有这样的差异?有没有办法让sys.stdout.write()打印1而不是11 谢谢 我想下一次执行时,写入和打印的结果应该相同 由于它不是第一次打印并且位于标准输出中,因此它会同时打印所有标准输出,即1个来自上一次执行,1个来自当前执行 请

我想了解
sys.stdout.write
print
方法(或函数?我应该称它们为函数还是方法?)

例如,下面的代码将打印11

a = str(1)
sys.stdout.write (a)
但这将打印1

a = str(1)
print (a)
为什么会有这样的差异?有没有办法让sys.stdout.write()打印1而不是11


谢谢

我想下一次执行时,写入和打印的结果应该相同

由于它不是第一次打印并且位于标准输出中,因此它会同时打印所有标准输出,即1个来自上一次执行,1个来自当前执行


请尝试并让我知道:)

它看起来像是
sys.stdout.write
返回它写入的值。因此它不打印
11
,而是打印
1
,并返回
1
。但是,如果在交互式解释器中执行此操作,解释器将打印表达式的返回值,该值也是
1

如果您不在交互式解释器中执行此操作(即,您将代码放入文件并运行它),它将不会打印第二个
1
。在交互式解释器中,可以通过指定结果来抑制它:

x = sys.stdout.write(a)

sys.stdout.write()
的返回值返回写入的字节数。在本例中,
1
,对于输入的任何表达式,它也会打印在交互式解释提示符上

例如:

>>> import sys
>>> sys.stdout.write("foo")
foo3
如果要隐藏此内容,可以执行以下操作:

>>> nbytes = sys.stdout.write("foo\n")
foo

要解释两者的区别,您必须了解打印功能-

print(*objects, sep=' ', end='\n', file=sys.stdout)
Print接受输入
对象
并将其写入
文件
参数,默认情况下该参数为
sys.stdout
,不返回任何内容。 它使用
file arguement
对象的
write
功能,并将
end
arguement打印为最后一个字符,这意味着它使用
sys.stdout.write默认情况下将语句打印到屏幕上
Sys.stdout.write
返回字节数作为返回值。
Print
sys.stdout.write

上面的包装器,我做错什么了吗?