style how guide google comment code python python-3.x pycharm type-hinting

how - Python 3 Anotaciones: escriba una lista de un tipo especificado(PyCharm)



how to document python code (4)

Ahora que Python 3.5 está oficialmente fuera, está el módulo de soporte Type Typets - typing y el "tipo" de List relevante para los contenedores genéricos.

En otras palabras, ahora puedes hacer:

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

Utilizando las anotaciones de función de Python 3, es posible especificar el tipo de elementos contenidos dentro de una lista homogénea (u otra colección) con el fin de insinuar el tipo en PyCharm y otros IDEs?

Un ejemplo de código pseudo-python para una lista de int:

def my_func(l:list<int>): pass



Sé que es posible usar Docstring ...

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

... pero prefiero el estilo de anotación si es posible.


Con el apoyo de BDFL, es casi seguro ahora que python (probablemente 3.5) proporcionará una sintaxis estandarizada para sugerencias de tipo a través de anotaciones de funciones.

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

Como se hace referencia en el PEP, hay un verificador de tipos experimental (tipo de pylint, pero para tipos) llamado mypy que ya usa este estándar, y no requiere ninguna sintaxis nueva.

http://mypy-lang.org/


Respondiendo mi propia pregunta; la respuesta TLDR es No .

Actualización 2

En septiembre de 2015, se lanzó Python 3.5 con soporte para Type Hints e incluye un nuevo módulo de tipado . Esto permite la especificación de los tipos contenidos dentro de las colecciones. A partir de noviembre de 2015, JetBrains PyCharm 5.0 es totalmente compatible con Python 3.5 para incluir sugerencias de tipo, como se ilustra a continuación.

Actualización 1

A partir de mayo de 2015, PEP0484 (Type Hints) ha sido formalmente aceptado. El proyecto de implementación también está disponible en github en ambv / typehinting .

Respuesta original

A partir de agosto de 2014, he confirmado que no es posible utilizar las anotaciones de tipo Python 3 para especificar los tipos dentro de las colecciones (por ejemplo, una lista de cadenas).

El uso de cadenas de documentos formateadas como reStructuredText o Sphinx son alternativas viables y son compatibles con varios IDEs.

También parece que Guido está reflexionando sobre la idea de extender las anotaciones tipo en el espíritu de mypy: http://mail.python.org/pipermail/python-ideas/2014-August/028618.html


Se han agregado comentarios tipo desde PEP 484

active_monitors = [] # type: List[Monitor]

Esto actualmente me funciona en PyCharm con Python 3.6.4

Imagen de ejemplo en Pycharm