2010-10-24 9 views
8

Se una virgola finale viene aggiunta alla fine di un'istruzione di stampa, l'istruzione successiva viene eseguita per prima. Perchè è questo? Ad esempio, questo esegue 10000 ** 10000 prima che venga stampata "Hi ":Python dopo la virgola dopo la stampa esegue l'istruzione successiva

print "Hi", 
print 10000 ** 10000 

E questo richiede un po 'prima della stampa "Ciao Ciao":

def sayHello(): 
    for i in [0] * 100000000: pass 
    print "Hello" 
print "Hi", 
sayHello() 

risposta

21
  1. In Python 2.x, un finale in , una dichiarazione print impedisce l'emissione di una nuova riga.

    • In Python 3.x, utilizzare print("Hi", end="") per ottenere lo stesso effetto.
  2. L'uscita standard è a buffer di linea. Pertanto, "Hi" non verrà stampato prima che venga emessa una nuova linea.

+0

C'è un analogo alla virgola finale in python 3? 'print ('Ciao')' non ha lo stesso effetto. – jgrant

+1

@jgrant Vedere l'aggiornamento. – kennytm

4

Come altri menzionare, standard out è tamponato. Puoi provare a utilizzare questo nei punti in cui è necessario che l'output appaia:

sys.stdout.flush() 
1

stampa inserisce automaticamente una nuova riga alla fine di una stringa. Questo non è necessariamente ciò che vogliamo; ad esempio, potremmo voler stampare diversi dati separatamente e farli apparire tutti su un'unica riga. Per impedire l'aggiunta di una nuova riga, inserire una virgola alla fine dell'istruzione print:

d=6 
print d, 
print d 

Output: 
6 6 
Problemi correlati