Вывод True и []

Мне было интересно, почему True and []
возвращает [] вместо False

Является ли выражение синтаксическим сахаром?

Ответ 1

Ответ можно найти на 5.10. Булевы выражения:

Выражение x and y сначала оценивает x; если x ложно, возвращается его значение; в противном случае y вычисляется и возвращается возвращаемое значение.

Ответ 2

Этот синтаксический сахар иногда используется как тернарный оператор в Python

C++: someVar = someCondition ? valueIfTrue : valueIfFalse;
Python: someVar = someCondition and valueIfTrue or valueIfFalse 

Изменить: Оказалось, что в комментариях:), это большая ошибка в Python и должна быть заменена на

someVar = valueIfTrue if condition else valueIfFalse