Python sys.stdout.writelines(";hello";)和sys.stdout.write(";hello";)

Python sys.stdout.writelines(";hello";)和sys.stdout.write(";hello";),python,python-3.x,Python,Python 3.x,以下两个命令之间有什么区别 In [57]: sys.stdout.writelines("hello") hello In [58]: sys.stdout.write("hello")

以下两个命令之间有什么区别

In [57]: sys.stdout.writelines("hello")                                                                           
hello
In [58]: sys.stdout.write("hello")                                                                                
Out[58]: hello5
接受一组字符串,并将它们一次写入一个字符串。由于iterable不附加换行符,所以若iterable的元素还并没有包含换行符,那个么这些元素将被连接起来。返回值为
None

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

第一个示例(
writelines
)之所以有效,是因为字符串是字符串的一个iterable。输入中的每个字符都是单独写入的。请注意,因为返回值是
None
,所以没有
Out[57]
,但字符都是打印出来的。它们是单独编写的,但您无法分辨,因为它们之间没有换行符

第二个示例(
write
)一次打印整个字符串。由于
write
也不添加换行符,因此返回值(
5
)将在后面立即打印<代码>输出[58]被打印,因为在这种情况下有一个非
None
返回值

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

除了返回值之外,对于单个字符串,
writelines
write
的结果无法区分<但是,code>writelines的效率要低得多,因为它有效地将
write
分别应用于每个字符。

接受字符串的iterable,并将它们一次写入
stdout
一个字符串。由于iterable不附加换行符,所以若iterable的元素还并没有包含换行符,那个么这些元素将被连接起来。返回值为
None

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

第一个示例(
writelines
)之所以有效,是因为字符串是字符串的一个iterable。输入中的每个字符都是单独写入的。请注意,因为返回值是
None
,所以没有
Out[57]
,但字符都是打印出来的。它们是单独编写的,但您无法分辨,因为它们之间没有换行符

第二个示例(
write
)一次打印整个字符串。由于
write
也不添加换行符,因此返回值(
5
)将在后面立即打印<代码>输出[58]被打印,因为在这种情况下有一个非
None
返回值

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


除了返回值之外,对于单个字符串,
writelines
write
的结果无法区分<代码>写线的效率要低得多,因为它有效地将
分别应用于每个字符。

一个有用的谷歌搜索短语可能是
python 3.6 stdout.writelines
,它可能会出现一个有用的谷歌搜索短语可能是
python 3.6 stdout.writelines
,它可能会出现
>>> sys.stdout.writelines(['hello\n', 'world\n'])
hello
world

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