2024-09-26 22:44:42 发布
网友
以下两个命令之间的区别是什么?在
In [57]: sys.stdout.writelines("hello") hello In [58]: sys.stdout.write("hello") Out[58]: hello5
^{}接受字符串的iterable并一次将它们写入stdout一个字符串。因为它不附加换行符,所以如果iterable的元素还不包含换行符,那么它们将被连接起来。返回值是None。在
stdout
None
^{}接受单个字符串,并将其写入stdout。它返回写入的字符数。在
第一个示例(writelines)之所以起作用,是因为字符串是字符串的iterable。每个字符都是单独写入的。注意,没有Out[57],因为返回值是None,但是字符都被打印出来了。它们是单独写的,但你无法分辨,因为它们之间没有新行。在
writelines
Out[57]
第二个示例(write)一次打印整个字符串。由于write也不追加换行符,返回值(5)将紧随其后打印。Out[58]被打印,因为在本例中有一个非None返回值。在
write
5
Out[58]
一般来说,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单独应用于每个字符。在
^{} 接受字符串的iterable并一次将它们写入
stdout
一个字符串。因为它不附加换行符,所以如果iterable的元素还不包含换行符,那么它们将被连接起来。返回值是None
。在^{} 接受单个字符串,并将其写入
stdout
。它返回写入的字符数。在第一个示例(
writelines
)之所以起作用,是因为字符串是字符串的iterable。每个字符都是单独写入的。注意,没有Out[57]
,因为返回值是None
,但是字符都被打印出来了。它们是单独写的,但你无法分辨,因为它们之间没有新行。在第二个示例(
write
)一次打印整个字符串。由于write
也不追加换行符,返回值(5
)将紧随其后打印。Out[58]
被打印,因为在本例中有一个非None
返回值。在一般来说,} ,所以通常您可以更好地看到差异。通常使用list或类似的iterable调用
writelines
是用来模拟/反转^{writelines
,但是write
只接受一个字符串(并返回一个值):除了返回值,对于单个字符串,}的结果是无法区分的。
writelines
和{writelines
效率要低得多,因为它有效地将write
单独应用于每个字符。在相关问题 更多 >
编程相关推荐