Wenn Sie nicht wollen, dass from __future__ import print_function
können Sie wie folgt vorgehen:
a = 100
b = True
print a if b else "", # Note the comma!
print "see no new line"
Welche Drucke:
100 see no new line
Wenn Sie keine Angst haben vor from __future__ import print_function
oder Python 3 oder höher verwenden:
from __future__ import print_function
a = False
b = 100
print(b if a else "", end = "")
Das Hinzufügen des else ist die einzige Änderung, die Sie vornehmen müssen, um Ihren Code syntaktisch korrekt zu machen, Sie brauchen das else für den bedingten Ausdruck (die "in line if else blocks")
Der Grund, warum ich nicht None
o 0
wie es andere in diesem Thread getan haben, ist, weil die None/0
würde dazu führen, dass das Programm print None
o print 0
in den Fällen, in denen b
es False
.
Wenn Sie mehr über dieses Thema lesen möchten, habe ich eine enlace zu den Versionshinweisen für den Patch, dass diese Funktion zu Python hinzugefügt wurde.
Das obige "Muster" ist dem in PEP 308 dargestellten Muster sehr ähnlich:
Diese Syntax mag seltsam und rückständig erscheinen; w in der Mitte des Ausdrucks und nicht vorne, wie in C's c ? x : y? Die Entscheidung wurde überprüft, indem die neue Syntax auf die Module in der Standardbibliothek anwandte und sah, wie sich der resultierende Code lesen. In vielen Fällen, in denen ein bedingter Ausdruck verwendet wird, scheint ein Wert der "Normalfall" und ein Wert ein "Ausnahmefall" zu sein scheint, der nur in seltenen Fällen verwendet wird, wenn die Bedingung nicht erfüllt ist. Die bedingte Syntax macht dieses Muster etwas deutlicher:
Inhalt = ((doc + ' \n ') if doc else '')
Ich denke also, dass dies insgesamt eine vernünftige Herangehensweise ist, aber man kann nicht mit der Einfachheit von argumentieren:
if logging: print data