Python中的双大于号是什么意思?

12

我在查阅一些Python源代码时,发现了以下内容:

print >> sys.stderr, __doc__

">>"是什么意思?我以前从没见过这样的语法。


2
@Shashank:被弃用了?我以为它直接被消灭了。弃用意味着它仍然可用,但人们建议不要使用它,而我认为这里并非如此。 - Amadan
1
@Amadan 是的,抱歉,我的意思是它在Python 2中已被弃用,在Python 3中已被删除。不应鼓励使用这种语法,即使在受尊敬的源代码中发现也是如此。 - Shashank
这个东西很难搜索,因为太多的例子都使用Python交互式shell并在各处粘贴三个大于号... - Qi Fan
2个回答

13
请参阅Python 2.7文档中的“打印chevron”描述:

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

特殊语法已在Python 3中消失,因为print从语句转换为函数。

你知道像这样的一行代码是做什么的吗?m = (1 + 5) >> 1 - MadPhysicist
1
@MadPhysicist 如果是这样,那就完全不同了:一个右位移运算符 - Amadan

2

这个语法是特定于print语句的。输出不会发送到标准输出,而是将输出发送到命名为>>的类似文件的对象中,本例中为标准错误。

在表达式中,这是右移运算符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接