python - 在 Python 中打印的三种方法——何时使用每种方法?

标签 python python-3.x printing policy

根据 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/

相关文章:

python - 如何安装 Python 配方文件 (.py)?

java - 在 Java 中打印数学符号给出错误的输出

python - NER 标记器的替代品用于长的、异构的短语?

python - 如何通过python和beautifulsoup找到各种网站标签?

python - 如何解决AttributeError : module 'tensorflow._api.v2.distribute' has no attribute 'TPUStrategy'

python - 如何打印没有前导 'shape' 信息的 Polars 数据帧

python - 在 csv 文件中打印多行输出

python - 我想将一个数据框附加到另一个数据框,即使它们的大小不同

python - 模糊图像内形状像圆角矩形的区域

python-3.x - 在TensorFlow中,函数 'axis'中的参数 'tf.one_hot'是什么