Comment spécifier des types de données d'entrée et de sortie dans les commentaires python?
J'ai vu plusieurs normes pour écrire des commentaires sur le type de données d'une fonction attend et retourne en Python. Est-il un consensus sur ce qui est le meilleur-pratique?
Est la nouvelle fonctionnalité dans http://www.python.org/dev/peps/pep-3107/ quelque chose que je devrais commencer en utilisant pour cela?
source d'informationauteur Joakim Lundborg
Vous devez vous connecter pour publier un commentaire.
Fonction des annotations ne sont pas destinés à un usage spécifique, ils peuvent être utilisés pour n'importe quoi.
Outils peuvent être écrits pour extraire des informations à partir des annotations et faire ce que vous voulez, y compris la vérification de types ou de la génération de la documentation. Mais python lui-même ne pas faire n'importe quoi avec l'information. Vous pouvez utiliser à un but complètement différent, c'est à dire de fournir une fonction qui sera appelée sur le paramètre ou de déclarer une chaîne de valeurs de retour possibles.
Les Annotations peuvent être n'importe quel objet:
et vous pouvez récupérer des objets à l'aide de:
Cas d'utilisation des suggestions fournies par le PEP:
Depuis la fonction d'annotation syntaxe est trop nouveau, il est vraiment pas utilisés pour des outils de production.
Je suggère d'utiliser d'autres méthodes de document. J'utilise epydoc pour générer ma documentation, et il peut lire le typage des paramètres des informations de docstrings:
Cet exemple est de epydoc du site web. Il peut générer de la documentation dans une variété de formats, et peut générer des graphiques à partir de vos classes et de différents profils d'utilisateurs.
Si vous utilisez epydoc de produire de la documentation de l'API, vous avez trois choix.
Epytext.
ReStructuredText, la TVD.
JavaDoc de la notation, qui ressemble un peu à epytext.
Je recommande TVD parce que ça fonctionne bien avec sphinx pour la génération de documentation de la suite qui comprend des références API. TVD le balisage est défini ici. Les différents epydoc champs, vous pouvez spécifier sont définis ici.
Exemple.
Python 3.5 officiel
typing
https://docs.python.org/3/library/typing.html
Cette mise à jour apporte une réelle partie de la langue.
Exemple:
Ce code fonctionne normalement: Python 3.5 ne pas appliquer en tapant par défaut.
Mais il peut toutefois être utilisé par des linters de diagnoze de problèmes, par exemple:
donne:
Existant analyseurs statiques comme Pycharm peut déjà analyser les Sphinx documents types, mais ce langage de mise à jour donne un fonctionnaire manière canonique qui sera susceptible de l'emporter.