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) + 2Corrigé
Voici l'analyse détaillée étape par étape :
1 + 2: C'est une expression arithmétique simple. L'interpréteur évalue l'expression à la valeur3et la renvoie. IPython intercepte ce retour et l'affiche à l'écran précédé de son prompt de sortie :Out[1]: 3.
print(1 + 2): L'expression1 + 2est évaluée à3. La fonctionprintest appelée avec l'argument3. Elle réalise son effet de bord en écrivant la chaîne"3"directement dans le flux de sortie standard. La console affiche donc3. Cependant, la fonctionprintrenvoieNone. Comme l'interpréteur interactif n'affiche jamais l'évaluation deNone, aucune ligneOut[2]:n'apparaît.
print(print(1 + 2)): L'interpréteur évalue l'expression interne d'abord.print(1 + 2)affiche3et renvoieNone. L'appel externe devient doncprint(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é.
print(1) + 2: L'interpréteur évalue en premier le membre gaucheprint(1). Cela affiche1sur la console et renvoie l'objetNone. L'évaluation tente ensuite d'additionnerNone + 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
- 9 autres exercices corrigés dans ce chapitre, et 9 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.