All;
def foo(i): return 100 if i < 10 else pass return 200 if i < 20 else pass return 1
Почему это не работает в Python? Я полагаю, этот код может работать так же, как:
def foo(i): if i < 10: return 100 elif i < 20: return 200 else: return 1
Спасибо!
В документации вы увидите, что "троичный оператор" должен выглядеть следующим образом:
conditional_expression ::= or_test ["if" or_test "else" expression] expression ::= conditional_expression | lambda_expr
и pass - это оператор , а не выражение
pass
return 100 if i < 10 else pass
вы должны прочитать это как return (100 if i < 10 else pass), поэтому pass не является значением
return (100 if i < 10 else pass)
прочитайте ваш код следующим образом:
return (100 if (i < 10) else pass)
pass не является значением, которое вы можете вернуть.Следующий код будет работать:
def foo(i): return 100 if i < 10 else (200 if i < 20 else 1)
pass - нулевая операция, т.е. когда она выполняется, ничего не происходит.Это полезно в качестве заполнителя, когда синтаксически требуется оператор, но не нужно выполнять код.Он не должен использоваться как часть какой-либо логики.
Вы должны прочитать свою функцию как
def foo(i): if i < 10: return 100 else: return pass if i < 20: return 200 else: return pass return 1
return 100 if i < 10 else pass - это не оператор "если", это троичный оператор