Stavo solo giocando con lo sys.stdout.write()
in una console Python quando ho notato che questo dà strani output.Uscita strana quando si scrive su stdout in console
Per ogni chiamata write()
, il numero di caratteri scritti, passati alla funzione, viene aggiunto all'output.
>>> sys.stdout.write('foo bar')
per esempio risultati in foo bar7
in stampa.
Anche il passaggio di una stringa vuota determina un'uscita di 0
.
Questo accade solo in una console Python, ma non quando si esegue un file con le stesse istruzioni. Più interessante accade solo per Python 3, ma non per Python 2.
Anche se questo non è un problema per me in quanto si verifica solo in una console, mi chiedo davvero perché si comporta in questo modo.
La mia versione di Python è 3.5.1 in Ubuntu 15.10.
Interessante. Quindi 'a = sys.stdout.write ('foo')' dovrebbe rivelare questo comportamento che cosa effettivamente fa anche. 'a' è impostato su' 3' in questo caso e il numero non si aggiunge più all'output. Ma mi chiedo ancora perché questo avvenga solo in Python 3. Anche in questo documento non trovo alcuna menzione nel documento. – critop
Ho aggiunto uno script che mostra il risultato, per rendere le cose più chiare. Non ho davvero letto i documenti per questo, l'ho appena assunto perché succede in un bel po 'di lingue e l'ho testato. Cercherò un PEP che lo menzioni e torno qui se lo faccio. – Noctua
Solo per aggiungere, conta i caratteri Unicode 'sys.stdout.write ('へ llö')' restituisce "へ llö4" – C14L