LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

def f(a:int, b:str):
  if a == b:
    делайЧтоТо

В нормальном языке уже на этапе компиляции компилятор может заключить, что «делайЧтоТо» - недостижимый код. В Питоне же это счастье происходит на этапе выполнения, ну или может линтер будет умным и заметит это. А в реальной программе на Питоне будет:

def f(a,b):
  if a == b:
     делайЧтоТо

Если a и b - это 2 и «2», то делайЧтоТо не вызовется. И если программист не задумался о типах a и b, то он может очень долго не разобраться, в чём проблема. Так что отсутствие неявного приведения, как в JS, не спасает.

Исходная версия den73, :

def f(a:int, b:str):
  if a == b:
    делайЧтоТо

В нормальном языке уже на этапе компиляции компилятор может заключить, что «делайЧтоТо» - недостижимый код. В Питоне же это счастье происходит на этапе выполнения. А в реальной программе на Питоне будет:

def f(a,b):
  if a == b:
     делайЧтоТо

Если a и b - это 2 и «2», то делайЧтоТо не вызовется. И если программист не задумался о типах a и b, то он может очень долго не разобраться, в чём проблема. Так что отсутствие неявного приведения, как в JS, не спасает.