Python 2 在布尔表达式中执行打印时出现语法错误

Python 2 Syntax error when executing print in boolean expression

为了证明 python 执行短路,我尝试 运行 以下代码片段

True or print('here')

并期望代码执行,计算结果为 True 而不是打印 "here"。但是python 2.7报语法错误:

python2 -c "True or print('hier')"
  File "<string>", line 1
    True or print('hier')
                ^
SyntaxError: invalid syntax

Python3 的行为符合我的预期。 如果我用另一个函数替换“打印”Python2.7 也会按预期运行。

这是 Python2.7 中的错误吗,因为支持特殊语法

print 'stuff'

或者这是有意为之的行为?当打印语句作为第一个“条件”时,代码在 Python2.7 中也正确执行。

Python 版本:Python 2.7.18

在Python2中,print是一个语句。因此,它不能出现在像 or 这样的二元运算符的右侧,其中需要表达式。

如果你写 print('here') or True 它被解析为 Python 2 中的语句 print ('here' or True) (将打印 'here'),而不是表达式 (print('here')) or (True)(计算结果为 True 并打印 'here' 作为副作用)如 Python 3.