Annotations Python 3: tapez une indication d’un type spécifié (PyCharm)

À l’aide des annotations de fonctions de Python 3, il est possible de spécifier le type d’éléments contenus dans une liste homogène (ou une autre collection) à des fins d’indication de type dans PyCharm et d’autres IDE?

Un exemple de code pseudo-python pour une liste de int:

def my_func(l:list): pass 

Je sais que c’est possible en utilisant Docssortingng …

 def my_func(l): """ :type l: list[int] """ pass 

… mais je préfère le style d’annotation si c’est possible.

Répondre à ma propre question la réponse TLDR est non oui .

Mise à jour 2

En septembre 2015, Python 3.5 a été publié avec le support de Type Hints et comprend un nouveau module de saisie . Cela permet de spécifier les types contenus dans les collections. Depuis novembre 2015, JetBrains PyCharm 5.0 prend entièrement en charge Python 3.5 pour inclure les indicateurs de type, comme illustré ci-dessous.

PyCharm 5.0 Achèvement du code en utilisant les astuces de type

Mise à jour 1

En mai 2015, PEP0484 (Type Hints) a été officiellement accepté. Le projet d’implémentation est également disponible sur github sous ambv / typehinting .

Réponse originale

En août 2014, j’ai confirmé qu’il n’était pas possible d’utiliser les annotations de type Python 3 pour spécifier les types dans les collections (ex: une liste de chaînes).

L’utilisation de docssortingngs formatées telles que reStructuredText ou Sphinx sont des alternatives viables et sockets en charge par divers IDE.

Il semble également que Guido réfléchit à l’idée d’étendre les annotations de type dans l’esprit de mypy: http://mail.python.org/pipermail/python-ideas/2014-August/028618.html

Maintenant que Python 3.5 est officiellement sorti, il existe les indicateurs de type prenant en charge la typing module et le “type” de liste correspondant aux conteneurs génériques.

En d’autres termes, vous pouvez maintenant faire:

 from typing import List def my_func(l: List[int]): pass 

Avec le support de la BDFL, il est presque certain que python (probablement 3.5) fournira une syntaxe standardisée pour les indications de type via des annotations de fonctions.

https://www.python.org/dev/peps/pep-0484/

Comme référencé dans le PEP, il existe un vérificateur de type expérimental (un peu comme pylint, mais pour les types) appelé mypy qui utilise déjà ce standard et ne nécessite aucune nouvelle syntaxe.

http://mypy-lang.org/

Des commentaires de type ont été ajoutés depuis PEP 484

 active_monitors = [] # type: List[Monitor] 

Cela fonctionne actuellement pour moi sur PyCharm avec Python 3.6.4

Exemple d’image à Pycharm