Подтвердить что ты не робот

Кастинг против принуждения в Python

В документации Python и в списках рассылки я вижу, что значения иногда "отбрасываются", а иногда "принуждаются". В чем разница?

4b9b3361

Ответ 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, неявный тип изменения.