在代码段中,我发现:
import sys
print >> sys.stderr, "hello"
有人可以解释它是如何运作的。 我不知道如何从语句中理解类文件对象的bitshift?
由于
答案 0 :(得分:1)
这种形式有时被称为“印花雪佛龙”。在这种形式中, >>之后的第一个表达式必须评估为“类文件” object,特别是具有所述write()方法的对象 以上。使用此扩展表单,将打印后续表达式 到这个文件对象。如果第一个表达式的计算结果为None,那么 sys.stdout用作输出文件。
基本上,打印声明的形式(逐字记录)
print_stmt ::= "print" ([expression ("," expression)* [","]]
| ">>" expression [("," expression)+ [","]])
答案 1 :(得分:0)
默认情况下,print
语句会写入sys.stdout
。如果您希望print
打印到另一个文件,则必须使用"重定向"语法使用>>
。