5
votes

Définition de la fonction Python3, flèche et deux-points

J'ai trouvé la définition de fonction python suivante:

def reverseString(self, s: 'List[str]') -> 'None':

Je ne comprends pas très bien 'List [str]' et -> 'None '.

J'ai trouvé que la flèche est une annotation de fonction mais je n'ai rien trouvé d'utile et compréhensible pour List [str].

Est-ce juste une annotation? ou impose-t-il que le type de paramètre s doit être un tableau de chaînes?


3 commentaires

Est l'annotation de type pour l'argument


C'est juste une annotation. L'interprète ne l'appliquera pas. Voir python.org/dev/peps/pep-0484 .


Attention, il devrait être -> None sans les guillemets autour de None .


3 Réponses :


2
votes

Il ne s'agit que d'indices de type python, vous pouvez en savoir plus sur PEP 484


1 commentaires

J'ai trouvé l'exemple du PEP 484 abstract très utile. Fondamentalement, c'est une annotation de fonction.



1
votes

La liste [str] ne joue pas vraiment de rôle tant que la fonction est toujours fournie avec une valeur s lorsqu'elle est appelée. J'ai essayé la fonction avec s: 'quelque chose de différent de la liste [str]' et cela a fonctionné de la même manière.


À propos du problème de la flèche, essayez-le simplement:

type(output)

Appeler:

print(c)

Puis vérifier la sortie:

output=reverseString('exampleinput1','exampleinput2')

Aucun

def reverseString(self, s: 'List[str]') -> 'None':
    pass

NoneType

Plus d'informations sur la flèche ici .


0 commentaires

2
votes

Ceci est une instance d'indication de type python3. L'utilisation de -> 'None' indique que la fonction n'a pas d'instruction de retour.

List [str] est plus intéressant: la partie List indique qu'elle retournera un type de liste, et son argument [str] l'indique c'est un type paramétré. En pratique, les listes python peuvent contenir n'importe quel type d'objet, mais dans un langage fortement typé, une liste est une collection homogène.

L'utilisation de cet indice indique à la fois à un appelant de la fonction que les s ne doivent contenir que des chaînes, évitant ainsi toute exception quelle que soit l'opération qui sera effectuée, et il indique également à un IDE intelligent (par exemple PyCharm , VSCode) que les objets contenus dans la liste ont des méthodes d'instance de chaîne pour les indicateurs d'auto-complétion.

L'interpréteur python ne fait rien avec ces informations en termes de vérification de type, cependant l'interpréteur mypy le fera tapezvérifiez votre code.

Pour plus d'informations, consultez PEP 484 et le module de saisie , qui a également été rétroporté vers les versions pré-3.5 python3 et 2.7.


1 commentaires

vous pouvez toujours terminer une fonction avec return None , ce que j'ai tendance à faire pour plus de clarté. Ainsi, -> None indique que la fonction renvoie None , ce qui se produirait s'il n'y avait pas d'instruction return, mais pourrait également se produire avec return None . Oh et je ne mettrais pas de guillemets autour de Aucun (comme l'a fait l'OP).