7
votes

"Aucun" n'est pas affiché comme prévu en mode interactif Python

Je pensais que l'affichage en mode interactif Python était toujours équivalent à Imprimer (REC ()) , mais ce n'est pas le cas pour Aucun . Est-ce une caractéristique linguistique ou je manque quelque chose? Merci xxx


3 commentaires

Comment voulez-vous dire comme prévu ? FWIW, Aucun n'est pas rien


@Moseskoledoye Je veux dire comme je m'y attendais bien sûr, je m'attendais à ce que cela se comporterait comme tout ce que Imprimer (REC ()) donne la même sortie, excuses


De Le docs "en mode interactif, si la valeur est pas Aucun , il est converti en une chaîne à l'aide de la fonction intégrée REC () 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 est Aucun , de sorte que les appels de procédure ne provoquent pas de sortie.) "


4 Réponses :


6
votes

C'est une fonctionnalité délibérée. Si le code Python que vous exécutez évalue exactement Aucun code>, il n'est pas affiché.

Ceci est utile beaucoup de temps. Par exemple, appeler une fonction avec un effet secondaire peut être utile et ces fonctions renvoient réellement Aucun code> mais vous ne voulez généralement pas voir le résultat. P>

Par exemple, appelant 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


0 commentaires

2
votes

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
>>>


0 commentaires

1
votes

Aucun représente l'absence de une valeur, mais cette absence peut être observée. Parce qu'il représente quelque chose dans python, son __ rep __ ne peut pas éventuellement retourner rien ; Aucun n'est pas rien.

Le résultat est délibéré. Si, par exemple, une fonction renvoie Aucun (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) ne Imprimer Aucun deux fois, comme fonction Imprimer renvoie également Aucun . .

sur une note latérale, impression (REC ()) augmentera un typeError en python.


4 commentaires

Merci, c'est utile. Peut-être pourrait-il être illustré plus loin avec quelque chose comme impression (impression (2)) qui affiche 2 et Aucun


@Chris_rands exactement!


" impression (REC ()) augmentera un typeError à Python." --- qui vient du REC () , qui nécessite un argument, pas le Imprimer . impression (REC (NONE)) imprime la chaîne 'Aucun' , qui apparaît sur la console sans citations: Aucun 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 () sans argument mais peut-être que ma question initiale n'était peut-être pas claire sur cette



3
votes

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


0 commentaires