2
import cStringIO

output = cStringIO.StringIO()
output.write('First line.\n')
print >>output, 'Second line.'

# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()

>>output第 5 行的print语句是做什么的?

4

1 回答 1

6

它将语句输出重定向print到一个打开的类似文件的对象。请参阅print声明文档

print还具有扩展形式,由上述语法的第二部分定义。这种形式有时被称为“打印人字形”。在这种形式中,后面的第一个表达式>>必须计算为“类文件”对象,特别是具有上述write()方法的对象。使用此扩展形式,后续表达式将打印到此文件对象。如果第一个表达式的计算结果为None,则将sys.stdout其用作输出文件。

本质上,该行被转换为output.write('Second line.' + '\n') asprint` 会在其输出中添加一个换行符,除非表达式以逗号结尾。

语法基于 bash append>>语法(这也影响了 C++<<>>I/O 运算符);请参阅PEP 214了解为什么选择它的完整动机。

在 Python 3 中,print()函数在哪里,你可以这样写:

print('Second line.', file=output)

反而。

于 2013-03-26T11:51:00.030 回答