Я не вижу здесь отношения с первоклассностью - вы передаете не * if
оператор функции, а объект, который она возвращает, что является полностью первым классом в python как в лисп. Однако, что касается дихотомии оператор / выражение, очевидно, что это возможно: например, Haskell имеет синтаксис, основанный на отступах, хотя чисто функциональный язык явно не имеет операторов.
Я думаю, что разделение Python здесь больше связано с запретом опасных конструкций, таких как "if x = 4:" и т. Д., Чем с любым синтаксическим ограничением. (Хотя я думаю, что он теряет больше, чем получает от этого - иногда иметь гибкость, достаточную для того, чтобы оторвать ногу, очень ценно, даже если вы рискуете потерять несколько пальцев ног время от времени.)