右移运算符如何在python print语句中工作?

Wan*_*wei 14 python grammar

我见过有人使用"print"和">>"将东西写入文件:

In [7]: with open('text', 'w') as f:
   ...:     print >> f, "Hello, world!"
   ...:

In [8]: !type text
Hello, world!
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?什么时候应该使用它而不是只使用"写"方法?

Ed.*_*Ed. 15

来自https://docs.python.org/2/reference/simple_stmts.html#the-print-statement

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

  • 也许值得注意的是,Python 3中不再存在这种扩展形式,因此新代码应该可以避免它. (6认同)
  • 在这种情况下,这实际上不是`>>`运算符; 解析器专门处理它作为`print`语法的一部分. (5认同)