В документации Python и в списках рассылки я вижу, что значения иногда "отбрасываются", а иногда "принуждаются". В чем разница?
Кастинг против принуждения в Python
Ответ 1
Я думаю, что "кастинг" не должен использоваться для Python; есть только преобразование типа, но нет отливок (в смысле С). Преобразование типа выполняется, например. через int(o)
, где объект o преобразуется в целое число (фактически, целочисленный объект построен из o). Принуждение происходит в случае двоичных операций: если вы выполняете x+y
, а x и y имеют разные типы, перед выполнением операции они принудительно вводятся в один тип. В 2.x специальный метод __coerce__
позволяет объекту контролировать их принуждение.
Ответ 2
Вставка явно. Coerce неявно.
Примеры в Python:
cast(2, POINTER(c_float)) #cast
1.0 + 2 #coerce
1.0 + float(2) #conversion
В ролях действительно появляется только C FFI. То, что обычно называют кастинг на C или Java, называется преобразованием в python, хотя его часто называют литой из-за его сходства с этими другими языками. В значительной степени каждый язык, с которым у меня есть опыт (включая python) Coercion, неявный тип изменения.