Uso de dos puntos en statement de variable

Recientemente me preguntaron qué significa esto en python:

>>> char : str

No tenía ni idea. Nunca había visto eso antes. Revisé los documentos y no hay nada de eso. La sugerencia de una persona fue que es una statement de tipo estático, pero tampoco hay absolutamente nada en la documentación al respecto.

Con lo anterior, si yo >>> type(char) falla

Si I >>> char : str = 'abc' funciona, y los resultados de type (char) son . Sin embargo, no puede ser una statement estática, porque puedo >>> char : str = 4 y type (char) se convierte en .

Así que vengo aquí para reunir la sabiduría de los muchos amos SO. Qué significa eso?

Estás mirando una anotación para una variable. La sugerencia se mueve a la asignación __annotations__ :

 >>> char: str >>> __annotations__ {'char': } 

Las anotaciones variables están ahí para admitir herramientas de terceros, como los verificadores de tipos; La syntax es nueva en Python 3.6.

Consulte PEP 526 – Sintaxis para anotaciones variables y Novedades en Python 3.6 :

Al igual que para las anotaciones de funciones, el intérprete de Python no asocia ningún significado particular a las anotaciones de variables y solo las almacena en el atributo __annotations__ de una clase o módulo.