• [^] # Re: Mauvais compromis

    Posté par (site web personnel) . En réponse au journal Quel pov' type. Évalué à 5.

    c'est très verbeux

    Dans mon expérience, 90% du typage c'est annoter les arguments des fonctions ou les attributs de classe avec var: TypeDeVar. Je manque peut-être d'imagination :) mais je ne sais pas comment on pourrait faire plus court. Peut-être plus d'inférences : Pourquoi est-ce que je suis obligé d'ajouter -> None à toutes les routines qui ne renvoient rien du tout ? Sûrement quand j'ai un keyword argument f(var=1) mypy pourrait décider que var doit être de type int ? Pour éviter ça je me suis senti obligé de mettre l'option no-untyped-def, qui est vraiment pédante.

    def log(msg: str, level=1):
     print("%d: %s" % (level, msg))
    reveal_type(log) # Revealed type is "def (msg: builtins.str, level: Any =) -> Any"

    ça n'arrive pas a la cheville d'un vrai typage statique

    C'est vrai. C'est clairement un rajout qui s'intègre moyennement bien au langage (ex: le problème de Serge). Mon problème à moi serait plutôt combien il est facile d'avoir des Any un peu partout dès qu'on oublie quelque chose (ex : juste au-dessus), ou lorsqu'on utilise une bibliothèque tierce qui n'a pas de types.

    Dans l'ensemble et malgré tout ça, je trouve que c'est très utile, et ça m'évite un grand nombre d'erreurs avant de lancer mon code, donc j'utilise.