Скажем, у вас есть функция:
def divide(a, b):
return a / b
Это, очевидно, даст другой результат, если a
и b
равны float
, int
или их комбинации. Если вас волнует только ситуация, когда a
и b
являются числами с плавающей запятой, как лучше всего с этим справиться?
i)
def divide(a, b):
if not isinstance(a, float):
raise TypeError('a must be a float')
if not isinstance(b, float):
raise TypeError('b must be a float')
return a / b
ii)
def divide(a, b):
return float(a) / float(b)
в) что-то еще?
Я предпочитаю ii), но коллега утверждает, что если вы используете a
и b
в другом месте, то i) с большей вероятностью предотвратит ошибки.
Это, очевидно, несколько тривиальный пример, но у моего коллеги гораздо больше опыта работы с C
, и я изо всех сил пытаюсь объяснить, почему использование isinstance
на самом деле не подходит для утиного ввода и что его проникновение в наш код Python не очень хорошо.
return float(a) / b
- person martineau   schedule 11.09.2013