C and X or Y
- это длительная ранняя попытка пользователей Python прокси для C ? X : Y
По большей части это работает, за исключением , если X
равно False
- это привело ко многим ошибкам в коде Python, поэтому в Python FAQ вы Вы найдете более правильное решение: (C and [X] or [Y])[0]
, потому что список с одним элементом, независимо от его оцененного логического значения, всегда равен True
! Например: [None]
- это True
, а None
- нет. Приведенный выше пример OP работает, потому что строка, представляющая X
, не является пустой.
Однако все это изменилось в Python 2.5, когда к языку был добавлен троичный или условный оператор, что позволило вам использовать очиститель X if C else Y
, как указано в других публикациях здесь. Если вы видите код, использующий старый формат, то это потому, что пользователь долгое время был программистом Python, который еще не принял новый синтаксис, он вырезал и вставлял другой старый код, или его работодатель все еще использует 2.4.x ( или более ранние выпуски) и т. д.