Python 3.6 está a punto de ser lanzado. PEP 494 - Python 3.6 Release Schedule menciona finales de diciembre, así que revisé las novedades de Python 3.6 para ver que mencionan las anotaciones de variables :
PEP 484 introdujo el estándar para anotaciones de tipo de parámetros de función, también conocido como sugerencias de tipo. Este PEP agrega sintaxis a Python para anotar los tipos de variables, incluidas las variables de clase y las variables de instancia:
primes: List[int] = [] captain: str # Note: no initial value! class Starship: stats: Dict[str, int] = {}
Al igual que para las anotaciones de funciones, el intérprete de Python no asigna ningún significado particular a las anotaciones de variables y solo las almacena en un atributo especial
__annotations__
de una clase o módulo. A diferencia de las declaraciones de variables en lenguajes de tipado estático, el objetivo de la sintaxis de anotación es proporcionar una manera fácil de especificar metadatos de tipo estructurado para herramientas y bibliotecas de terceros a través del árbol de sintaxis abstracta y el__annotations__
atributo.
Entonces, por lo que leí, son parte de las sugerencias de tipo que provienen de Python 3.5, descritas en ¿Qué son las sugerencias de tipo en Python 3.5 ?
Sigo el ejemplo de captain: str
y class Starship
, pero no estoy seguro del último: ¿Cómo se primes: List[int] = []
explica? ¿Está definiendo una lista vacía que solo permitirá números enteros?
primes: List[int] = []
es solo una lista vacía comoprimes = []
. La diferencia es que usted está afirmando queprimes
está destinado a contener soloint
mensajes de correo electrónico y las aplicaciones de terceros pueden escribir verificar su programa para verificar esta afirmación, pero cuando ejecuta el código en cualquier intérprete de Python, eso es lo mismo que escribirprimes = []
, y por lo tantoprimes: List[int] = []; primes.append("string")
sigue siendo válido.