web-dev-qa-db-fra.com

Annotation de fonction avec deux ou plusieurs paramètres de retour

Lorsque j'écris une annotation pour une fonction qui renvoie un paramètre, je n'ai aucun problème.

def func() -> str:
    return "ok"

Cependant, lorsque j'écris une annotation avec deux ou plusieurs paramètres, mon PyCharm me donne SyntaxError: invalid syntax.

def func() -> str, str:
    return "ok - 1", "ok - 2"

Je pense que les paramètres peuvent être combinés avec un Tuple, mais je ne pense pas que ce soit la meilleure façon de le faire.

Ma question est: comment puis-je annoter correctement une fonction avec deux ou plusieurs paramètres de retour?

Veuillez inclure un lien PEP, le cas échéant, dans votre réponse. J'ai cherché la réponse à PEP 484 et PEP 3107 et je n'ai pas pu la trouver.

16
Kirill

Utilisez typing.Tuple:

from typing import Tuple

def func() -> Tuple[str, str]:
    return 'a', 'b'

Ceci est approprié car, conceptuellement, vous renvoyez en fait un seul Tuple contenant ces valeurs. Remarque:

print(type(func()))

Production:

<class 'Tuple'>

À l'exception du Tuple (()) Vide, les parenthèses ne sont pas nécessaires pour définir un Tuple , ce qui signifie que 'a', 'b' est créé en tant que Tuple, plutôt que d'être des valeurs séparées rassemblées en une par l'instruction return.

24
gmds