sys.stdout.write 和 print 的区别?

新手上路,请多包涵

是否存在 sys.stdout.write() 优于 print 的情况?

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

原文由 Johanna Larsson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 623
2 个回答

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

 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 函数和 print 语句之间存在细微差别(更普遍的是函数和语句之间)。

如果在评估参数时出错:

 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

原文由 luc 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

使用 stdout 时,需要自己将对象转为字符串(例如调用“str”),没有换行符。

所以

print 99

相当于:

 import sys
sys.stdout.write(str(99) + '\n')

原文由 dogbane 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏