sys.stdout.writelines(hello)和 sys.stdout.write(hello)

2024-09-26 22:44:42 发布

您现在位置:Python中文网/ 问答频道 /正文

以下两个命令之间的区别是什么?在

In [57]: sys.stdout.writelines("hello")                                                                           
hello
In [58]: sys.stdout.write("hello")                                                                                
Out[58]: hello5

Tags: in命令hellowritelinesstdoutsysoutwrite
1条回答
网友
1楼 · 发布于 2024-09-26 22:44:42

^{}接受字符串的iterable并一次将它们写入stdout一个字符串。因为它不附加换行符,所以如果iterable的元素还不包含换行符,那么它们将被连接起来。返回值是None。在

^{}接受单个字符串,并将其写入stdout。它返回写入的字符数。在

第一个示例(writelines)之所以起作用,是因为字符串是字符串的iterable。每个字符都是单独写入的。注意,没有Out[57],因为返回值是None,但是字符都被打印出来了。它们是单独写的,但你无法分辨,因为它们之间没有新行。在

第二个示例(write)一次打印整个字符串。由于write也不追加换行符,返回值(5)将紧随其后打印。Out[58]被打印,因为在本例中有一个非None返回值。在

一般来说,writelines是用来模拟/反转^{},所以通常您可以更好地看到差异。通常使用list或类似的iterable调用writelines,但是write只接受一个字符串(并返回一个值):

>>> sys.stdout.writelines(['hello\n', 'world\n'])
hello
world

>>> sys.stdout.write('hello\n world\n')
hello
world
5

除了返回值,对于单个字符串,writelines和{}的结果是无法区分的。writelines效率要低得多,因为它有效地将write单独应用于每个字符。在

相关问题 更多 >

    热门问题