Ihr erstes Beispiel gibt drei Elemente print
, die durch Kommata getrennt sind:
1
2 if 0 else 3
4
Sie könnten die Klammern an verschiedenen Orten setzen und das gleiche Ergebnis:
print 1, (2 if 0 else 3), 4
Wenn Sie möchten, Haben Sie das Tupelverhalten, können Sie dort Klammern verwenden:
print (1, 2) if 0 else (3, 4)
Das Problem besteht natürlich darin, dass es als Tupel und nicht als separate Argumente ausgegeben wird. Wirklich, ist das Beste, was entweder from __future__ import print_function
verwenden und print(*((1, 2) if 0 else (3, 4)))
oder einen ganzen if
zu haben - else
Block:
if 0:
print 1, 2
else:
print 3, 4
Da die ersten ist 'drucken 1, (2, wenn 0, sonst 3), 4' und die zweite ist 'print ((1, 2) wenn 0 sonst 3), 4 '- siehe https://docs.python.org/2/reference/expressions.html#operator-precedence und https://docs.python.org /2/library/stdtypes.html#truth-value-testing. Es ist nicht klar, welchen Teil Sie überraschend finden. – jonrsharpe
Aus diesem Grund sollten Sie mit Klammern drucken. Um solche Verwirrung zu vermeiden. –