2009-10-21 35 views

Respuesta

30

Creo que "casting" no se debe usar para Python; solo hay conversión de tipo, pero no versiones (en el sentido C). Se realiza una conversión de tipo, p. a través de 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 las operaciones binarias: si lo hace x+y, yxey tienen diferentes tipos, se les coacciona 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.

38

Cast es explícita. 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 

moldeada en realidad sólo aparece en el directorio C FFI. Lo que se suele llamar conversión en C o Java se conoce como conversión en python, aunque a menudo se lo conoce como conversión debido a sus similitudes con esos otros lenguajes. En casi todos los idiomas con los que tengo experiencia (incluida Python) Coercion está cambiando el tipo de letra implícitamente.

+2

-1. Esa es la nomenclatura de C++; Python usa una terminología diferente. – SamB

+12

+1: Para esta pregunta, el ejemplo es perfectamente válido. Y está claramente marcado como C++. – user183037

+2

La pregunta es sobre el término 'reparto' en el contexto del lenguaje Python. La respuesta que explica que 'float (1)' es construcción, no fundición, es mejor. –