sys.stdout.write和print之间的区别?

问题描述 投票:334回答:13

sys.stdout.write()print更好吗?

[示例:更好的性能;更有意义的代码)

python printing stdout
13个回答
262
投票

print只是一个薄包装器,用于格式化输入(可修改,但默认情况下在args和换行符之间使用空格),并调用给定对象的write函数。默认情况下,此对象为sys.stdout,但是您可以使用“ V形”格式传递文件。例如:

print >> open('file.txt', 'w'), 'Hello', 'World', 2+3

参见:https://docs.python.org/2/reference/simple_stmts.html?highlight=print#the-print-statement


在Python 3.x中,print成为一个函数,但是由于sys.stdout参数的缘故,仍然可以传递file以外的内容。

print('Hello', 'World', 2+3, file=open('file.txt', 'w'))

请参见https://docs.python.org/3/library/functions.html#print


在Python 2.6+中,print仍然是一个语句,但可以与]一起用作函数>

from __future__ import print_function

更新:Bakuriu指出要指出,打印功能与打印语句之间存在微小差异(并且更一般地,功能与语句之间存在差异)。

[在评估参数时出错:

print "something", 1/0, "other" #prints only something because 1/0 raise an Exception

print("something", 1/0, "other") #doesn't print anything. The function is not called

1
投票

在Python 3中,有充分的理由在sys.stdout.write上使用print,但是这个原因也可以变成使用sys.stdout.write的原因。


1
投票

[例如,当动态打印很有用时,最好是在较长的过程中提供信息:

import time, sys
Iterations = 555
for k in range(Iterations+1):
    # some code to execute here ...
    percentage = k / Iterations
    time_msg = "\rRunning Progress at {0:.2%} ".format(percentage)
    sys.stdout.write(time_msg)
    sys.stdout.flush()
    time.sleep(0.01)

0
投票
>>> sys.stdout.write(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: expected a string or other character buffer object
>>> sys.stdout.write("a")
a>>> sys.stdout.write("a") ; print(1)
a1

观察上面的例子:


0
投票

其中一个不同之处是,当尝试将字节打印成十六进制外观时。例如,我们知道255的十进制值为十六进制形式的0xFF

val = '{:02x}'.format(255) 

sys.stdout.write(val) # prints ff2
print(val)            # prints ff

138
投票

print首先将对象转换为字符串(如果还不是字符串)。如果它不是行的开头,而不是换行符,它将在对象之前放置一个空格。


39
投票

我的问题是是否在那里在某些情况下sys.stdout.write()print


35
投票

以下是一些示例代码,这些代码基于Mark Lutz所著的Learning Python


11
投票

在至少一种情况下,您需要sys.stdout而不是打印。


8
投票

我的问题是,是否存在sys.stdout.write()优于print的情况>


3
投票

在2.x版本中,print语句将对提供的内容进行预处理,将其转换为字符串,处理分隔符和换行符,并允许重定向至文件。 3.x将其转换为功能,但仍具有相同的职责。


1
投票

在某些情况下,sys.stdout.write()比打印吗?


1
投票

在某些情况下sys.stdout.write()更适合打印吗?

© www.soinside.com 2019 - 2024. All rights reserved.