根据Tim Peters的说法,“应该有一种-最好只有一种-显而易见的方式来做到这一点。”在Python中,似乎有三种打印信息的方式:

print('Hello World', end='')
sys.stdout.write('Hello World')
os.write(1, b'Hello World')

问题:是否有最佳做法策略说明何时应在程序中使用这三种不同的打印方法?

最佳答案

请注意,Tim的说法是完全正确的:是的唯一显而易见的实现方式: print()
您提到的其他两种可能性有不同的目标。

如果我们要总结三个替代方案的目标:

  • print是允许您向stdout(或其他文件)写入内容的高级功能。它提供了一个简单易读的API,并提供了一些花哨的选项,用于分隔单个项目,或者您是否要添加终止符等。这是大多数时候您想要执行的操作。
  • sys.stdout.write只是文件对象的一种方法。因此,sys.stdout的真正意义在于您可以像其他任何文件一样传递它。当您必须处理期望文件的功能并且希望它直接在stdout上打印文本时,此功能很有用。

    换句话说,您根本不应该使用sys.stdout.write。您只需将sys.stdout传递给需要文件的代码即可。

    注意:在python2中,在某些情况下,使用print语句生成的代码比调用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/

    10-14 16:19
    查看更多