Существует ровно один раз, когда целое число против числа с плавающей точкой будет проблемой. Это единственный раз, когда вы найдете «простую» ошибку, которая странная и сложная для отладки.
Отдел.
Все остальное делает преобразование, которое вам нужно, когда вам это нужно.
Если вы используете Python 2.x и случайно набрасываете /
операторов, не задумываясь, вы можете - при некоторых общих обстоятельствах - в итоге поступить неправильно.
У вас есть несколько вариантов.
from __future__ import division
даст вам семантику Python 3 для деления.
Запускайте с опцией -Qnew
всегда, чтобы получить новую семантику деления.
Используйте float
вблизи /
операций.
Разделение - единственное место, где тип может иметь значение. Это единственный раз, когда целые числа ведут себя не так, как плавающие, таким образом, что незаметно влияет на ваши результаты.
Все другие проблемы несоответствия типов будут сбои, за исключением TypeError
. Все другие. Вы не будете тратить время на отладку. Вы сразу поймете, что не так.
Чтобы быть более конкретным.
Там нет отладки "ожидал строку, но не получил строку". Это немедленно завершится с трассировкой. Нет путаницы. Нет времени на размышления. Если функция ожидает строку, то вызывающая сторона должна предоставить строку - это правило.
Альтернатива 2, приведенная выше, используется РЕАЛЬНО для исправления проблемы, когда у вас есть функция, которая ожидает строку И вы запутались и забыли предоставить строку. Эта ошибка случается редко и приводит к немедленному исключению типа.