我想了解sys.stdout.write
和print
方法(或函数之间的区别?我应该将它们称为函数或方法吗?)
例如,下面的代码将打印11
a = str(1)
sys.stdout.write (a)
但这会打印1
a = str(1)
print (a)
为什么会有这样的差异?有没有办法让sys.stdout.write()打印1,而不是11?
谢谢!
答案 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
返回字节数作为返回值。
Print
是sys.stdout.write
之上的一些包装。