515 votes

Python - la différence entre sys.stdout.write et impression

Y a-t-il des situations dans lesquelles est préférable à ?

(Exemples : meilleur rendement ; code qui est plus logique)

367voto

luc Points 13564

print est juste un wrapper mince que les formats d'entrées (espace entre args et de saut de ligne à la fin) et des appels à la fonction d'écriture d'un objet donné. Par défaut, cet objet est - sys.stdout mais vous pouvez passer d'un fichier par exemple:

print >> open('file.txt', 'w'), 'Hello', 'World', 2+3

En Python 3.x, print devient une fonction, mais il est toujours possible de passer à autre chose que la sys.stdout. voir http://docs.python.org/library/functions.html.

dans la version 2.6 de Python+, print est toujours un énoncé, mais peut être utilisé comme une fonction avec

from __future__ import print_function

Mise à jour : Il y a une petite différence entre la fonction d'impression et l'impression (et plus généralement entre une fonction et une déclaration) pointé par Bakuriu dans les commentaires

En cas d'erreur lors de l'évaluation des arguments:

print "something", 1/0, "other" #prints only something because 1/0 raise an Exception

print("something", 1/0, "other") #doesn't print anything. The func is not called

187voto

dogbane Points 85749

« imprimer » convertit d’abord l’objet en une chaîne (si elle n’est pas déjà une chaîne). Il mettra également un espace avant l’objet, si ce n’est pas le début d’une ligne et un caractère de nouvelle ligne à la fin.

Lorsque vous utilisez stdout, vous devez convertir l’objet en une chaîne vous-même (en appelant « str », par exemple) et il n’y a aucun caractère de nouvelle ligne.

Alors

équivaut à :

52voto

Will Townes Points 304

Voici un exemple de code basé sur le livre D’apprentissage Python de Mark Lutz qui répond à votre question :

Ouverture log.txt dans un éditeur de texte va révéler ce qui suit :

41voto

LiamSullivan Points 157
<blockquote> <p>Ma question est de savoir si ou non il existe des situations dans lesquelles <code></code> est préférable à<code></code></p> <p>Après avoir terminé de développer un script l’autre jour, j’ai téléchargé sur un serveur unix. Tous mes messages de débogage utilisés <code></code> déclarations et ces <strong>ne sont pas</strong> apparaissent sur un journal du serveur.</p><p>Il s’agit d’un cas où il vous faudra <code></code> à la place.</p></blockquote>

9voto

Hamish Downer Points 4086
<blockquote> <p>Ma question est de savoir si ou non il existe des situations dans lesquelles <code></code> est préférable à<code></code></p> <p>Si vous écrivez une application de ligne de commande qui peut écrire dans les fichiers et stdout, alors il est très pratique. Vous pouvez faire des choses comme :</p><pre><code></code></pre><p>Cela ne signifie pas que vous ne pouvez pas utiliser le <code></code> modèle, mais parfois, il vaut la peine.</p></blockquote>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X