Maison > Article > développement back-end > Comment puis-je spécifier plusieurs types de retour dans les astuces de type Python ?
Spécification de plusieurs types de retour avec des indices de type
En Python, les fonctions peuvent parfois renvoyer différents types de données en fonction des paramètres d'entrée ou de la logique interne. Pour indiquer clairement les types de retour attendus, des indices de type peuvent être utilisés.
Utilisation du type Union
Depuis Python 3.10, le "|" L’opérateur peut être utilisé pour créer un type d’union. Cela permet de spécifier plusieurs types de retour, permettant la syntaxe suivante :
def foo(id) -> list | bool: ...
Cela indique que la fonction foo peut renvoyer soit une liste, soit un booléen.
Utilisation de la saisie. Union
Pour les versions Python antérieures à 3.10, la construction typing.Union peut être utilisé :
from typing import Union def foo(id) -> Union[list, bool]: ...
Limitations des indications de type
Il est important de noter que les indications de type en Python ne sont pas appliquées au moment de l'exécution. Cela signifie que les annotations de type servent de guide lors du développement du code mais ne garantissent pas les types de retour réels.
Démonstration :
>>> def foo(a: str) -> list: ... return "Works" ... >>> foo(1) 'Works'
Dans cet exemple, un entier est passé en argument à la fonction foo qui est annotée pour renvoyer une liste. Malgré la violation de l'annotation de type, la fonction renvoie une chaîne et s'exécute avec succès.
Cependant, l'attribut __annotations__ de la fonction reflétera toujours le type de retour attendu tel que spécifié dans l'annotation :
>>> foo.__annotations__ {'return': <class 'list'>, 'a': <class 'str'>}
Pour Pour plus d'informations sur les astuces de type, reportez-vous à PEP 483 et Que sont les astuces de type dans Python 3.5 ??. Notez que cette fonctionnalité est disponible à partir de Python 3.5.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!