#pylint
#python #пилинт #pylint
Вопрос:
почему pylint жалуется на этот блок кода?
R1705: Unnecessary "elif" after "return" (no-else-return)
def f(a):
if a == 1:
return 1
elif a == 2:
return 2
return 3
Чтобы предотвратить ошибку, мне пришлось создать временную переменную, которая кажется менее приятной.
def f(a):
if a == 1:
b = 1
elif a == 2:
b = 2
else:
b = 3
return b
Решение:
def f(a):
if a == 1:
return 1
if a == 2:
return 2
return 3
Ответ №1:
Цель else
блока — определить код, который не будет выполняться, если условие истинно, поэтому выполнение не будет продолжаться до следующего блока.
Однако в вашем коде основной условный блок имеет оператор return , что означает, что выполнение завершит функцию, поэтому нет необходимости в блоке else: весь последующий код после возврата, по определению, не будет выполнен, если условие истинно. Это избыточно. Его можно заменить простым if
.
Комментарии:
1.
elif
это сокращение от «else if».2. но код в полном порядке, и это имеет смысл, верно? является ли это ограничением / ошибкой pylint?
3. Код содержит избыточный оператор else, и pylint уведомляет вас об этом, что как раз и является его задачей.
4. Я понимаю. Каков рекомендуемый способ кодирования такой логики?
5. Просто замените elif на if — они семантически идентичны в этой ситуации без избыточного неявного else.