История изменений
Исправление mogwai, (текущая версия) :
В общем случае код выглядит примерно как:
def f(x): if cond1(x): return res1 y = process1(x); if cond2(y): return res2 if cond3(y): return res3 z = process2(x, y) if cond4(x,y,z): return res4 if cond5(x,y,z): return res5 ...после убирания return получается что-то вроде
def f(x): if cond1(x): res = res1 else: y = process1(x); if cond2(y): res = res2 elif cond3(y): res = res3 else: z = process2(x, y) if cond4(x,y,z): res = res4 elif cond5(x,y,z): res = res5 ... return res
FTFY
Второе читается проще. И наглядно показывает проблему алгоритма. Ты что-то не так делаешь, если у тебя много уровней вложений «если». Ранний возврат в данном случае - накрытие мусора газеткой.
Исходная версия mogwai, :
В общем случае код выглядит примерно как:
def f(x): if cond1(x): return res1 y = process1(x); if cond2(y): return res2 if cond3(y): return res3 z = process2(x, y) if cond4(x,y,z): return res4 if cond5(x,y,z): return res5 ...после убирания return получается что-то вроде
def f(x): if cond1(x): res = res1 else: y = process1(x); if cond2(y): res = res2 elif cond3(y): res = res3 else: z = process2(x, y) if cond4(x,y,z): res = res4 elif cond5(x,y,z): res = res5 ... return res
Второе читается проще. И наглядно показывает проблему алгоритма. Ты что-то не так делаешь, если у тебя много уровней вложений «если». Ранний возврат в данном случае - накрытие мусора газеткой.