根据 Tim Peters ,“应该有一种——最好只有一种——显而易见的方法来做到这一点。”在 Python 中,似乎有三种打印信息的方式:
print('Hello World', end='')
sys.stdout.write('Hello World')
os.write(1, b'Hello World')
问题:是否有最佳实践政策规定何时应在程序中使用这三种不同的打印方法?
最佳答案
请注意,Tim 的陈述是完全正确的:只有一种显而易见的方法:print()
.
您提到的其他两种可能性有不同的目标。
如果我们要总结一下三种备选方案的目标:
<print
是高级函数,允许您将内容写入标准输出(或其他文件)。它提供了一个简单易读的 API,并提供了一些关于如何分隔单个项目的奇特选项,或者您是否要添加或不添加终止符等。这是您大多数时候想要做的。sys.stdout.write
只是文件对象的一种方法。所以sys.stdout
的真正意义在于您可以像传递任何其他文件一样传递它。当您必须处理需要文件的函数并且希望它直接在标准输出上打印文本时,这很有用。换句话说,你根本不应该使用
sys.stdout.write
。您只需将sys.stdout
传递给需要文件的代码。注意:在 python2 中,有些情况下使用
print
statement 会产生比调用sys.stdout.write
更糟糕的代码。然而,print
函数允许您定义分隔符和终止符,从而避免了几乎所有这些极端情况。os.write
是写入文件的低级调用。您必须手动对内容进行编码,并且还必须显式传递文件描述符。这意味着只处理低级代码,由于某种原因,这些代码不能在更高级别的接口(interface)之上实现。您几乎不想直接调用它,因为它不是必需的,而且 API 比其他的更差。
请注意,如果您的代码应该在文件中写下内容,最好这样做:
my_file.write(a)
# ...
my_file.write(b)
# ...
my_file.write(c)
比:
print(a, file=my_file)
# ...
print(b, file=my_file)
# ...
print(c, file=my_file)
因为它更干燥。使用 print
你必须每次都重复 file=
。如果您只需要在代码的 一个 位置写入,这很好,但如果您有 5/6 个不同的写入,则直接调用 write
方法会容易得多。
关于python - 在 Python 中打印的三种方法——何时使用每种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532946/