Les annotations de fonctions ne sont pas destinées à un usage spécifique, elles peuvent être utilisées pour n'importe quoi.
Des outils peuvent être écrits pour extraire des informations des annotations et faire tout ce que vous voulez, y compris vérifier les types ou générer de la documentation. Mais python lui-même ne fait rien avec l'information. Vous pouvez utiliser un objectif complètement différent, c'est-à-dire fournir une fonction qui sera appelée sur le paramètre ou déclarer une chaîne de valeurs de retour possibles.
Les annotations peuvent être un objet:
def somefunc(param1: "string annotation",
param2: 151631,
param3: any_object): -> "some information here":
et vous pouvez récupérer les objets à l'aide:
print (somefunc.func_annotations)
{'param1': "string annotation",
'param2': 151631,
'param3': <object any_object>,
'return': "some information here"}
Utilisez des suggestions de cas fournies par le PEP:
- Fournir la saisie des informations
- Typage
- Let IDEs montrent quels types une fonction attend et retourne
- la surcharge des fonctions/fonctions génériques
- ponts en langue étrangère
- Adaptation
- fonctions logiques de prédicats
- Base de données cartographie de requête
- Paramètre RPC marshaling
- Autres informations
- Documentation des paramètres et de retour des valeurs
Depuis la syntaxe d'annotation de fonction est trop nouvelle, il est vraiment pas utilisé pour tous les outils de production.
Je suggère d'utiliser d'autres méthodes pour documenter cela. J'utilise epydoc pour générer mes documents, et il peut lire les informations de frappe paramètre de docstrings:
def x_intercept(m, b):
"""
Return the x intercept of the line M{y=m*x+b}. The X{x intercept}
of a line is the point at which it crosses the x axis (M{y=0}).
This function can be used in conjuction with L{z_transform} to
find an arbitrary function's zeros.
@type m: number
@param m: The slope of the line.
@type b: number
@param b: The y intercept of the line. The X{y intercept} of a
line is the point at which it crosses the y axis (M{x=0}).
@rtype: number
@return: the x intercept of the line M{y=m*x+b}.
"""
return -b/m
Cet exemple est de epydoc's website. Il peut générer de la documentation dans divers formats et générer de bons graphiques à partir de vos classes et de vos profils d'appel.
Pouvez-vous préciser à quelle version de Python cette syntaxe a été ajoutée? –
Une implémentation de référence a été vérifiée dans la branche p3yk en tant que révision 53170: http://svn.python.org/view?rev=53170&view=rev –
http://www.python.org/dev/peps/pep-3107/cible python version 3.0. – Zitrax