Je pensais que l'affichage en mode interactif Python était toujours équivalent à Imprimer (REC ()) code>, mais ce n'est pas le cas pour Aucun code>. Est-ce une caractéristique linguistique ou je manque quelque chose? Merci
4 Réponses :
C'est une fonctionnalité délibérée. Si le code Python que vous exécutez évalue exactement Ceci est utile beaucoup de temps. Par exemple, appeler une fonction avec un effet secondaire peut être utile et ces fonctions renvoient réellement Par exemple, appelant Aucun code>, il n'est pas affiché. Aucun code> mais vous ne voulez généralement pas voir le résultat. P> impression () code> retourne Aucun code>, mais vous ne voulez généralement pas le voir: p> >>> print("hello")
hello
>>> y = print("hello")
hello
>>> y
>>> print(y)
None
dans Python, une fonction qui ne renvoie rien mais s'appelle uniquement que ses effets secondaires ne renvoient aucun. Comme ces fonctions sont suffisamment courantes, l'interprète interactif Python n'imprime rien dans ce cas. Par extension, il n'imprime rien lorsque l'expression interactive n'évalue à aucun, même si ce n'est pas un appel de fonction.
Si peut être trompeur pour les débutants, car vous avez P>
>>> a = None >>> a >>>
Le résultat est délibéré. Si, par exemple, une fonction renvoie sur une note latérale, Aucun code> représente l'absence de une valeur, mais cette absence peut être observée. Parce qu'il représente quelque chose em> dans python, son __ rep __ code> ne peut pas éventuellement retourner rien em>; Aucun code> n'est pas rien. p>
Aucun code> (similaire à ne pas avoir de déclaration de retour), la valeur de retour d'un appel à une telle fonction ne se présente pas dans la console, donc par exemple impression (aucun) code> ne Imprimer em> Aucun code> deux fois, comme fonction Imprimer code> renvoie également Aucun p>. P>.
impression (REC ()) code> augmentera un typeError code> en python. P>
Merci, c'est utile. Peut-être pourrait-il être illustré plus loin avec quelque chose comme impression (impression (2)) code> qui affiche 2 code> et Aucun code>
@Chris_rands exactement!
" impression (REC ()) code> augmentera un typeError à Python." --- qui vient du REC () code>, qui nécessite un argument, pas le Imprimer code>. impression (REC (NONE)) code> imprime la chaîne 'Aucun' code>, qui apparaît sur la console sans citations: Aucun code> Script de ligne de commande ou en mode interactif).
@ Kevinj.chase merci Kevin, je n'ai jamais eu l'intention de suggérer appeler REC () code> sans argument mais peut-être que ma question initiale n'était peut-être pas claire sur cette
Oui, ce comportement est intentionnel.
du Documents Python p>
7.1. Déclarations d'expression p>
Les déclarations d'expression sont utilisées (principalement de manière interactive) pour calculer et écrire une valeur ou (généralement) pour appeler une procédure (une fonction qui retourne aucun résultat significatif; en Python, les procédures renvoient la valeur
Aucun code>). D'autres utilisations des déclarations d'expression sont autorisées et de temps en temps utile. La syntaxe d'une déclaration d'expression est la suivante: p>expression_stmt ::= starred_expression
Comment voulez-vous dire comme prévu i>? FWIW,
Aucun code> n'est pas rien@Moseskoledoye Je veux dire comme je m'y attendais i> bien sûr, je m'attendais à ce que cela se comporterait comme tout ce que
Imprimer (REC ()) code> donne la même sortie, excusesDe Le docs "en mode interactif, si la valeur est pas
Aucun code>, il est converti en une chaîne à l'aide de la fonction intégréeREC () code> et la chaîne résultante est écrite sur la sortie standard sur une ligne par elle-même (sauf si le Le résultat estAucun code>, de sorte que les appels de procédure ne provoquent pas de sortie.) "