打印变量时sys.stdout.write和print之间的区别

时间:2013-12-10 05:07:22

标签: python python-3.x

我想了解sys.stdout.writeprint方法(或函数之间的区别?我应该将它们称为函数或方法吗?)

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

a = str(1)
sys.stdout.write (a)

但这会打印1

a = str(1)
print (a)

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

谢谢!

4 个答案:

答案 0 :(得分:8)

sys.stdout.write()的返回值返回no。写的字节数。在这种情况下1也会在交互式解释提示中打印出来的任何表达式。

示例:

>>> import sys
>>> sys.stdout.write("foo")
foo3

如果你想隐藏它,你可以这样做:

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

答案 1 :(得分:4)

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

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

x = sys.stdout.write(a)

答案 2 :(得分:2)

我猜你的下一次执行应该为write和print提供相同的结果。

因为它没有在第一次打印并且位于stdout中,所以它同时打印所有标准输出,即1表示先前执行,1表示当前执行。

试试让我知道:)。

答案 3 :(得分:2)

为了解释您必须了解打印功能的区别 -

print(*objects, sep=' ', end='\n', file=sys.stdout)

打印接受输入objects并将其写入file争论,默认情况下为sys.stdout并返回Nothing。 它使用write file arguement对象的函数,并将end争论作为最后一个字符打印出来意味着它使用 sys.stdout.write默认情况下将语句打印到屏幕。 Sys.stdout.write返回字节数作为返回值。 Printsys.stdout.write之上的一些包装。