Я запускаю PyLint для некоторого кода и получаю предупреждение «Либо все операторы return в функции должны возвращать выражение, либо ни один из них не должен. (Inconsistent-return-операторов).» *
Вот код, который у меня есть:
def determine_operand_count(opcode_form, opcode_byte):
if opcode_form == OP_FORM.VARIABLE:
if opcode_byte & 0b00100000 = 0b00100000:
return OP_COUNT.VAR
return OP_COUNT.OP2
if opcode_form == OP_FORM.SHORT:
if opcode_byte & 0b00110000 == 0b00110000:
return OP_COUNT.OP0
return OP_COUNT.OP1
if opcode_form == OP_FORM.LONG:
return OP_COUNT.OP2
Здесь «OP_FORM» и «OP_COUNT» - это перечисления, определенные ранее в коде.
Для меня этот код - очень читаемый код, и Думаю, мне любопытно, на что жалуется предупреждение от PyLint. В каждом моем состоянии возвращается тип «OP_COUNT». На самом деле, если бы ни одно из этих условий не возвращало OP_COUNT, мой код полностью потерпел бы неудачу.
Это, кажется, предупреждение о моих "операторах возврата", предполагая, что некоторые не возвращают никакого вида выражения. Но это явно не так (насколько я вижу), поскольку каждое возвращаемое выражение что-то возвращает. Так что я предполагаю, что это связано с подразумеваемым возвратом?
Но до этого момента в моем исходном коде я фактически содержал предложения "else" для своих внутренних операторов if
. Но когда я это сделал, PyLint дал мне еще одно предупреждение: «Ненужное« else »после« return »(no-else-return)».
Я увидел следующее: « Как исправить несоответствие оператор return в python?", но это, похоже, не отражает ситуацию в моем коде.
Так что мне неясно, как удовлетворить PyLint в этом случае, так как код четко работает и кажется, делает то, что подсказывает мне предупреждение. Учитывая это, я подозреваю, что упускаю что-то очевидное, но в настоящее время мне не хватает интуиции для определения. Буду признателен за любую помощь в обнаружении того, что мне не хватает.