Adloun

Python (école d'ingénieur) · Chapitre 1 · Exercice

Analyse de l'interpréteur (Retour vs Effet)

Bases de Python, variables et types

Énoncé

Déterminer l'affichage produit sur la console par l'exécution successive des instructions suivantes sous IPython :

In [1]: 1 + 2
In [2]: print(1 + 2)
In [3]: print(print(1 + 2))
In [4]: print(1) + 2

Corrigé

Voici l'analyse détaillée étape par étape :

  1. 1 + 2 : C'est une expression arithmétique simple. L'interpréteur évalue l'expression à la valeur 3 et la renvoie. IPython intercepte ce retour et l'affiche à l'écran précédé de son prompt de sortie : Out[1]: 3.
  1. print(1 + 2) : L'expression 1 + 2 est évaluée à 3. La fonction print est appelée avec l'argument 3. Elle réalise son effet de bord en écrivant la chaîne "3" directement dans le flux de sortie standard. La console affiche donc 3. Cependant, la fonction print renvoie None. Comme l'interpréteur interactif n'affiche jamais l'évaluation de None, aucune ligne Out[2]: n'apparaît.
  1. print(print(1 + 2)) : L'interpréteur évalue l'expression interne d'abord. print(1 + 2) affiche 3 et renvoie None. L'appel externe devient donc print(None), ce qui écrit la chaîne "None" sur la sortie standard. On obtient donc deux lignes d'affichage successives :
3
None

Le retour de l'instruction globale est également None, donc aucun prompt de sortie n'est affiché.

  1. print(1) + 2 : L'interpréteur évalue en premier le membre gauche print(1). Cela affiche 1 sur la console et renvoie l'objet None. L'évaluation tente ensuite d'additionner None + 2. Python lève immédiatement une exception de type : TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →