2010-06-07 6 views
1

de l'invite interactive:stdout et anomalies stderr

>>> import sys 
>>> sys.stdout.write('is the') 
is the6 

ce qui est '6' fait là?

un autre exemple:

>>> for i in range(3): 
...  sys.stderr.write('new black') 
... 
9 
9 
9 
new blacknew blacknew black 

où sont les chiffres viennent?

Répondre

2

Dans 3.x la méthode write d'un objet fichier renvoie le nombre d'octets écrits et l'invite interactive affiche la valeur de retour de tout ce que vous exécutez. Donc, vous imprimez 'is the' (6 octets), et l'interpréteur imprime 6 (le retour de l'écriture). See the relevant docs pour 3.1.

Cela ne se produit pas avant 3.0 car la méthode d'écriture a renvoyé None, et donc rien n'a été imprimé.

+2

ne le reprenez pas. le comportement est le même sur ma machine en utilisant python 3.1.2. et le 'write()' de l'objet file dans python 3.x renvoie le nombre d'octets écrits ... si l'OP affecte la valeur de retour de l'écriture à une variable fictive, la sortie parasite disparaîtra. –

+0

@Adrien: Merci de le signaler! Je me suis corrigé moi-même. –

0

Ce sont les valeurs renvoyées par write, imprimées par le shell interactif.

Essayez

>>> 3

ce qui se passe?

0

Cela se produit sur Python3, mais pas sur Python2.

Mike a raison de dire que l'écriture dans Python3 renvoie le nombre d'octets écrits, qui est ensuite imprimé par le shell interactif. L'écriture dans Python2 a retourné None, donc rien n'a été imprimé

Questions connexes