Вывод True и [] - PullRequest
       23

Вывод True и []

10 голосов
/ 11 января 2012

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

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

Ответы [ 2 ]

17 голосов
/ 11 января 2012

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

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

2 голосов
/ 11 января 2012

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

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

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

someVar = valueIfTrue if condition else valueIfFalse
...