Рассмотрим эту функцию:
def parity(num):
num % 2 == 0 and return "that is even"
return "that is odd"
Первая строка функции - это синтаксическая ошибка (я использую v 3.7.3).Зачем?Похоже, вы должны быть в состоянии «вернуться» откуда угодно.
ПРИМЕЧАНИЕ. Я понимаю, что в этом конкретном случае я мог бы использовать
return "that is even" if num % 0 == 0 else "that is odd"
Это не моя проблема.Моя проблема в том, что это намного компактнее и легче читать поток, если вы напишите:
condition 1 or return "condition one was not met"
condition 2 or return "condition two was not met"
condition 3 or return "contition three what not met"
[rest of the function goes here]
чем:
if not condition 1:
return "condition one was not met"
if not condition 2:
return "condition two was not met"
if not condition 3:
return "condition three was not met"
[rest of the function goes here]
и - помимо этого предпочтения краткости /удобочитаемость - для меня просто не имеет смысла, что я не могу просто выполнить возврат в это место в коде. документация для возврата гласит:
7.6.Оператор return
return_stmt ::= "return" [expression_list]
return может происходить только синтаксически, вложенным в определение функции, но не в определение вложенного класса.
Если присутствует список выражений, он оценивается, иначе None являетсязамещенный.
return оставляет текущий вызов функции со списком выражений (или None) в качестве возвращаемого значения.
Когда return передает управление из оператора try с предложением finally, это предложение finallyвыполняется до фактического выхода из функции.
В функции генератора оператор return указывает на то, что генератор завершен и вызовет StopIteration.Возвращаемое значение (если оно есть) используется в качестве аргумента для создания StopIteration и становится атрибутом StopIteration.value.
В функции асинхронного генератора пустой оператор возврата указывает, что асинхронный генератор выполнен и будет вызывать StopAsyncIterationбыть воспитанным.Непустое выражение return является синтаксической ошибкой в функции асинхронного генератора.
Мне не кажется, что что-то в этом определении исключает использование, которое я пытаюсь использовать.Здесь есть что-то, чего я не понимаю?