Dans la documentation Python et sur les listes de diffusion, je vois que les valeurs sont parfois "cast", et parfois "coercées". Quelle est la différence?Casting contre coercition en Python
Répondre
Je pense que "casting" ne devrait pas être utilisé pour Python; il n'y a que la conversion de type, mais pas de conversion (au sens C). Une conversion de type est effectuée, par ex. où l'objet o est converti en un entier (en fait, un objet entier est construit sur o). La coercition se produit dans le cas d'opérations binaires: si vous faites x+y
, et que x et y ont des types différents, ils sont contraints dans un seul type avant d'effectuer l'opération. Dans 2.x, une méthode spéciale __coerce__
permet à l'objet de contrôler sa coercition.
La distribution est explicite. La coercition est implicite.
Les exemples en Python seraient:
cast(2, POINTER(c_float)) #cast
1.0 + 2 #coerce
1.0 + float(2) #conversion
Cast est vraiment seulement dans le C IFF. Ce que l'on appelle typiquement le cast en C ou en Java est appelé conversion en python, bien qu'on l'appelle souvent casting en raison de ses similarités avec ces autres langages. Dans presque toutes les langues avec lesquelles j'ai l'expérience (y compris python) Coercion est le changement de type implicite.
-1. C'est la nomenclature C++; Python utilise une terminologie différente. – SamB
+1: Pour cette question, l'exemple est parfaitement valide. Et c'est clairement marqué comme C++. – user183037
La question concerne le terme «cast» dans le contexte du langage Python. La réponse qui explique que 'float (1)' est la construction, pas le casting, est meilleure. –