Se non vuoi from __future__ import print_function
, puoi fare quanto segue:
a = 100
b = True
print a if b else "", # Note the comma!
print "see no new line"
Che stampa:
100 see no new line
Se non sei avverso from __future__ import print_function
o stai usando Python 3 o versioni successive:
from __future__ import print_function
a = False
b = 100
print(b if a else "", end = "")
L'aggiunta dell'altro è l'unica modifica che è necessario apportare per rendere sintatticamente corretto il codice, è necessario l'altro per l'espressione condizionale ("in linea se altri blocchi")
Il motivo per cui non ho usato None
o 0
come altri nel thread hanno usato, è perché l'uso None/0
causerebbe il programma print None
o print 0
nei casi in cui si b
trova False
.
Se vuoi leggere su questo argomento ho incluso un link alle note di rilascio per la patch che questa funzionalità è stata aggiunta a Python.
Il 'modello' sopra è molto simile al modello mostrato in PEP 308:
Questa sintassi può sembrare strana e arretrata; perché la condizione va nel mezzo dell'espressione, e non in primo piano come in C's c? x: y? La decisione è stata verificata applicando la nuova sintassi ai moduli nella libreria standard e vedendo come viene letto il codice risultante. In molti casi in cui viene utilizzata un'espressione condizionale, un valore sembra essere il "caso comune" e un valore è un "caso eccezionale", utilizzato solo in occasioni più rare quando la condizione non è soddisfatta. La sintassi condizionale rende questo modello un po 'più ovvio:
contents = ((doc + '\ n') if doc else '')
Quindi, nel complesso, penso che questo sia un modo ragionevole di approvarlo, ma non puoi discutere con la semplicità di:
if logging: print data