Domanda

Nella documentazione di Python e nelle mailing list vedo che i valori sono talvolta "cast", e talvolta "forzati". Qual è la differenza?

È stato utile?

Soluzione

Penso che " casting " non dovrebbe essere usato per Python; ci sono solo conversioni di tipi, ma nessun cast (nel senso C). Viene eseguita una conversione del tipo, ad es. attraverso int (o) dove l'oggetto o viene convertito in un numero intero (in realtà, un oggetto intero viene costruito da o). La coercizione si verifica nel caso di operazioni binarie: se si esegue x + y e xey hanno tipi diversi, vengono costretti in un singolo tipo prima di eseguire l'operazione. In 2.x, un metodo speciale __coerce__ consente agli oggetti di controllare la loro coercizione.

Altri suggerimenti

Il cast è esplicito. Il coerce è implicito.

Gli esempi in Python sarebbero:

cast(2, POINTER(c_float)) #cast
1.0 + 2  #coerce 
1.0 + float(2) #conversion

Il cast arriva davvero solo in C FFI. Quella che viene generalmente chiamata casting in C o Java viene definita conversione in Python, anche se spesso viene definita casting a causa delle sue somiglianze con quelle altre lingue. In quasi tutte le lingue con cui ho esperienza (incluso python) Coercion è modifica implicita del tipo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top