Quelles sont les variables les annotations en Python 3.6?

Python 3.6 est sur le point d'être libéré. PEP 494 -- Python 3.6 Calendrier de mise en mentionne la fin du mois de décembre, je suis donc allé à travers Ce qui est Nouveau en Python 3.6 de voir la mention de la variable annotations:

PEP 484 introduit la norme pour les annotations de type des paramètres de la fonction, une.k.un. type de conseils. Ce PEP ajoute la syntaxe de Python pour annoter les types de variables, y compris les variables de classe et les variables d'instance:

  primes: List[int] = []

  captain: str  # Note: no initial value!

  class Starship:
     stats: Dict[str, int] = {}

Tout comme pour la fonction d'annotations, l'interpréteur Python ne fixez pas un sens particulier à la variable d'annotations et seulement les stocke dans un attribut spécial __annotations__ d'une classe ou d'un module. Contrairement aux déclarations de variables dans les langages à typage statique, l'objectif de l'annotation de la syntaxe est de fournir un moyen facile de spécifier de type structuré de métadonnées pour des tiers, des outils et des bibliothèques via l'arbre de syntaxe abstraite et la __annotations__ attribut.

Donc, à partir de ce que j'ai lu ils font partie du type de conseils venant de Python 3.5, décrit dans Quelles sont les préconisations en Python 3.5.

J'ai suivi les captain: str et class Starship exemple, mais vous ne savez pas à propos de la dernière: Comment primes: List[int] = [] expliquer? Est-ce la définition d'une liste vide qui va juste permettre entiers?

Type d'indicateurs n' pas n'importe quel type de vérification. primes: List[int] = [] est juste une liste vide comme primes = []. La différence, c'est que vous êtes revendiquant que primes signifie contiennent uniquement ints et les applications 3ème partie peut taper vérifier votre programme afin de vérifier cette affirmation, mais lorsque vous exécutez le code dans n'importe quel interpréteur python c'est juste le même que l'écriture de primes = [], et faisant ainsi primes: List[int] = []; primes.append("string") est toujours valide.
oui, bon point. Comme Jim Fasarakis-Hilliard décrit dans sa réponse à Quelles sont les préconisations en Python 3.5, pourquoi le type conseilsAide à type de dames, aide à la documentation et Aide les IDEs de développer plus précis et robustes outils. Prises à partir de PEP 526 -- Syntaxe pour la Variable Annotations, Python restera un typées dynamiquement de la langue, et les auteurs n'ont aucun désir de toujours faire des préconisations obligatoires, même par convention.

OriginalL'auteur fedorqui | 2016-10-11