J'ai une fonction en python qui peut retourner un bool
ou un list
. Existe-t-il un moyen de spécifier les types de retour à l'aide d'indices de type.
Par exemple, est-ce la bonne façon de procéder?
def foo(id) -> list or bool:
...
python
python-3.x
return-type
type-hinting
python-3.5
Yahya Uddin
la source
la source
Réponses:
De la documentation
Par conséquent, la bonne façon de représenter plus d'un type de données de retour est
Mais notez que la saisie n'est pas appliquée. Python continue de rester un langage à typage dynamique. La syntaxe d'annotation a été développée pour aider lors du développement du code avant sa mise en production. Comme l'indique PEP 484, "aucune vérification de type ne se produit lors de l'exécution".
Comme vous pouvez le voir, je passe une valeur int et retourne une chaîne. Cependant, le
__annotations__
sera réglé sur les valeurs respectives.Veuillez consulter le PEP 483 pour en savoir plus sur les astuces de type. Voir également Que sont les conseils de type dans Python 3.5 ?
Veuillez noter que cela n'est disponible que pour Python 3.5 et versions ultérieures. Ceci est clairement mentionné dans le PEP 484 .
la source
La déclaration
def foo(client_id: str) -> list or bool:
lorsqu'elle est évaluée, équivaut àdef foo(client_id: str) -> list:
et ne fera donc pas ce que vous voulez.La manière native de décrire un indice de type "A ou B" est Union (merci à Bhargav Rao):
Je ne veux pas être le gars "Pourquoi voulez-vous faire ça quand même", mais peut-être que 2 types de retours ne sont pas ce que vous voulez:
Si vous souhaitez renvoyer un booléen pour indiquer un certain type de cas d'erreur spécial, envisagez d'utiliser des exceptions à la place. Si vous souhaitez renvoyer un bool en tant que valeur spéciale, une liste vide serait peut-être une bonne représentation. Vous pouvez également indiquer qui
None
pourrait être retourné avecOptional[list]
la source
Au cas où quelqu'un atterrirait ici à la recherche de "comment spécifier les types de valeurs de retour multiples?", Utilisez
Tuple[type_value1, ..., type_valueN]
Plus d'informations: https://code-examples.net/en/q/2651e60
la source