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.
为了证明 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.