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