Wenn Sie nicht möchten, from __future__ import print_function
können Sie Folgendes tun:
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 from __future__ import print_function
Python 3 oder höher nicht ablehnen oder 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 benötigen das else für den bedingten Ausdruck (das "in line if else-Block").
Der Grund, warum ich andere im Thread nicht verwendet habe None
oder 0
mag, ist, dass die Verwendung None/0
das Programm zu print None
oder print 0
in den Fällen veranlassen würde, in denen dies der Fall b
ist False
.
Wenn Sie zu diesem Thema lesen möchten, habe ich einen Link zu den Versionshinweisen für den Patch eingefügt, mit dem diese Funktion zu Python hinzugefügt wurde.
Das obige 'Muster' ist dem in PEP 308 gezeigten Muster sehr ähnlich:
Diese Syntax mag seltsam und rückwärts erscheinen; Warum steht der Zustand in der Mitte des Ausdrucks und nicht vorne wie in Cs c? x: y? Die Entscheidung wurde überprüft, indem die neue Syntax auf die Module in der Standardbibliothek angewendet wurde und festgestellt wurde, wie der resultierende Code gelesen wurde. In vielen Fällen, in denen ein bedingter Ausdruck verwendet wird, scheint ein Wert der "allgemeine Fall" und ein Wert ein "Ausnahmefall" zu sein, der nur in selteneren Fällen verwendet wird, wenn die Bedingung nicht erfüllt ist. Die bedingte Syntax macht dieses Muster etwas offensichtlicher:
Inhalt = ((doc + '\ n') wenn doc else '')
Insgesamt denke ich, dass dies ein vernünftiger Weg ist, dies zu erreichen, aber Sie können nicht mit der Einfachheit argumentieren:
if logging: print data