Casting vs. coercion en Python
Pregunta
En la documentación de Python y en las listas de correo, veo que los valores a veces se "emiten" y "a veces" son obligatorios. ¿Cuál es la diferencia?
Solución
Creo que " casting " no debe utilizarse para Python; solo hay conversión de tipo, pero no hay conversiones (en el sentido C). Se realiza una conversión de tipo, por ejemplo. a través de int (o)
donde el objeto o se convierte en un entero (en realidad, un objeto entero se construye a partir de o). La coacción ocurre en el caso de operaciones binarias: si hace x + y
, yx y y tienen diferentes tipos, se convierten en un solo tipo antes de realizar la operación. En 2.x, un método especial __coerce__
permite que el objeto controle su coerción.
Otros consejos
El lanzamiento es explícito. La coerción es implícita.
Los ejemplos en Python serían:
cast(2, POINTER(c_float)) #cast
1.0 + 2 #coerce
1.0 + float(2) #conversion
El reparto realmente solo aparece en el C FFI. Lo que normalmente se denomina casting en C o Java se conoce como conversión en python, aunque a menudo se lo conoce como casting debido a sus similitudes con esos otros lenguajes. En casi todos los idiomas que tengo experiencia con (incluyendo python) Coercion es cambio de tipo implícito.