任何人都可以解释原因:
>>> print 1,2 if 0 else 3,4
1 3 4
但:
>>> print(1,2) if 0 else 3,4
3 4
或者这根本与这个条件无关?
答案 0 :(得分:1)
您的第一个示例为print
提供了三个以逗号分隔的项目:
1
2 if 0 else 3
4
您可以将括号放在不同的位置并获得相同的结果:
print 1, (2 if 0 else 3), 4
如果您想拥有元组行为,可以在那里使用括号:
print (1, 2) if 0 else (3, 4)
问题当然是它打印为元组而不是单独的参数。实际上,最好的方法是使用from __future__ import print_function
并使用print(*((1, 2) if 0 else (3, 4)))
或使用整个if
- else
块:
if 0:
print 1, 2
else:
print 3, 4
答案 1 :(得分:0)
引用docs:
print依次计算每个表达式并写入结果 反对标准输出。
所以我们只需要弄清楚这些表达式就在你的情况下。
print 1,2 if 0 else 3,4
相当于print 1, (2 if 0 else 3), 4
。
print语句接收三个“参数”,第一个和第三个是常量表达式,第二个包含三元语句。
print(1,2) if 0 else 3,4
相当于打印(1,2) if 0 else 3, 4
。
print语句接收两个“参数”,第一个包含三元语句,第二个是常量表达式。