Как, если еще нормально работает в этом фрагменте кода без синтаксических ошибок.
def even_or_odd(number):
return 'Odd' if number % 2 else 'Even'
В Python3 if и else вводят блоки кода и должны заканчиваться знаком «:» (двоеточие), но в приведенном выше фрагменте кода внутри операторов return нет «:» после if и else. Почему в Python не отображается синтаксическая ошибка





if и else требуют двоеточия только при использовании в заявления. Но здесь они используются в выражение. В выражении нельзя использовать двоеточия. Грамматика Python имеет правило:
test: or_test ['if' or_test 'else' test] | lambdef
Не стоит удивляться, ведь в языках часто используются одни и те же слова или символы для обозначения совершенно разных вещей в разных контекстах. Например, в Python * используется как для умножения, так и для упаковки и распаковки элементов списка.