Python / print() / Afficher des valeurs en texte

En Python, print() convertit les valeurs en texte et écrit normalement sur la sortie standard. Il insère des espaces entre les valeurs et un retour à la ligne final ; sep, end, file et flush règlent ce comportement. Il renvoie None, pas le texte affiché.

Affichage élémentaire et guillemets

La signature est print(*objects, sep=' ', end='\n', file=None, flush=False). *objects permet plusieurs valeurs. Sans fichier explicite, la sortie standard sys.stdout envoie généralement le texte au terminal ou à la fenêtre d’exécution de l’IDE. Consultez la référence de print() pour les arguments.

Utilisez Python 3. Enregistrez chaque exemple complet en UTF-8 dans print_example.py et lancez python print_example.py, ou python3 selon votre installation. Remplacez le contenu pour chaque essai indépendant.

print("Hello")
print('Hello')
print("'Hello'")
print('"Hello"')
print("count", 3, True, None)

Résultat attendu :

Hello
Hello
'Hello'
"Hello"
count 3 True None

Les guillemets simples et doubles délimitent les chaînes sans s’afficher eux-mêmes. Pour afficher des guillemets, entourez-les de l’autre sorte. Plusieurs arguments permettent de mélanger nombres et chaînes sans concaténation avec +. Sans valeur, print() écrit seulement son retour à la ligne par défaut.

sep sépare les valeurs, end termine l’appel

sep se place entre les arguments du même appel ; end après sa dernière valeur. Utilisez end="" pour supprimer le retour à la ligne ou end=" " pour relier l’affichage suivant avec une espace.

print("A", "B", sep="-", end=" | ")
print("C")
values = ["A", "B"]
print(values, sep="-")
print(*values, sep="-")
A-B | C
['A', 'B']
A-B

Le premier appel écrit A-B | puis C arrive sur la même ligne. Une liste passée comme argument unique affiche sa représentation : sep n’en change pas le format interne. Dépaquetez *values pour passer les éléments séparément. Omettez une option pour retrouver son comportement par défaut.

Formatage et valeur renvoyée

Préparez une chaîne pour contrôler décimales et disposition d’une phrase. Cet exemple utilise le format de f-string :.2f pour deux décimales.

price = 12.5
quantity = 3
message = f"Total: {price * quantity:.2f}"
result = print(message)
print(result)
Total: 37.50
None

message contient le texte ; result reçoit None. Pour transmettre un résultat calculé à du code, utilisez return et laissez l’appelant décider de l’affichage. Afficher deux décimales ne change pas la précision de la valeur numérique initiale.

Écrire un fichier UTF-8 avec file

file attend un objet fichier texte accessible en écriture. Cet exemple complet écrit puis lit report.txt dans un dossier temporaire, sans écraser un fichier existant, puis nettoie les données. Aucun paquet supplémentaire n’est nécessaire.

from pathlib import Path
from tempfile import TemporaryDirectory

with TemporaryDirectory() as folder:
    path = Path(folder) / "report.txt"
    with path.open("w", encoding="utf-8") as output:
        print("Alpha", 10, file=output)
    with path.open("a", encoding="utf-8") as output:
        print("Beta", 20, file=output)
    print(path.read_text(encoding="utf-8"), end="")
Alpha 10
Beta 20

"w" crée ou vide le fichier ; "a" ajoute à la fin. Chaque bloc with ferme son fichier. Le dernier end="" évite un retour supplémentaire à ceux déjà lus. Vérifiez chemins, droits et modes et encodage des fichiers avant une utilisation sur un vrai fichier.

Capturer du texte et comprendre TypeError

StringIO fonctionne comme un fichier texte en mémoire. Passez file=output pour réutiliser une fonction d’affichage et appelez getvalue() avant fermeture. Une f-string est plus directe pour construire une seule phrase.

from io import BytesIO, StringIO

with StringIO() as output:
    print("A", "B", sep="-", file=output)
    text = output.getvalue()
print(repr(text))

try:
    print("A", "B", sep=1)
except TypeError:
    print("TypeError: sep")

with BytesIO() as output:
    try:
        print("text", file=output)
    except TypeError:
        print("TypeError: binary stream")
'A-B\n'
TypeError: sep
TypeError: binary stream

Le \n visible grâce à repr() est le retour capturé. sep et end doivent être des chaînes ou None pour leurs valeurs par défaut ; un nombre est invalide. BytesIO, flux binaire, ne peut pas recevoir les écritures textuelles de print(). Encodez explicitement et utilisez une API d’écriture binaire pour les données binaires.

Afficher une progression sans retour avec flush

La sortie peut être mise en tampon avant transmission. Une progression sans retour à la ligne ou une sortie vers fichier ou tube peut apparaître plus tard que prévu. flush=True demande à la destination de vider son tampon.

for number in range(3):
    print(number, end=" ", flush=True)
print("done")
0 1 2 done

Les caractères finaux sont ceux ci-dessus, mais leur apparition dépend du terminal, de l’IDE et de la destination. flush n’ajoute pas de ligne, n’efface pas l’écran et ne garantit pas une sauvegarde persistante sur disque. Gardez les valeurs par défaut et demandez la vidange aux endroits où les mises à jour intermédiaires sont utiles.