← Все вопросы

Чем and/or отличаются от & и | в Python?

Задан 7 месяцев назад969 просмотров3 ответа
21

Запутался: где-то пишут if a and b, а где-то a & b. Это одно и то же или нет? Когда что использовать?

3 ответа

33
✓ Принятый ответ — помог автору

Это разные вещи.

and / orлогические операторы, работают с истинностью значений и используют короткое замыкание (если левая часть уже всё решает, правую не вычисляют). Именно их пишут в if.

& / |побитовые, работают с битами целых чисел: 6 & 32, 4 | 15. Для bool они тоже работают (True & False), но без короткого замыкания и с другим приоритетом.

Правило простое: в условиях всегда and/or. &/| — когда реально нужна работа с битами (или с множествами/масками в pandas).

Данил Джалагания В pandas как раз наоборот заставляют & и |, новичков это путает · 6 месяцев назад
9

Разные.

Георгий Почапский and/or — логика, &/| — биты · 7 месяцев назад
7

Ещё важный момент: a and b возвращает не обязательно True/False, а само значение операнда. 1 and 2 даёт 2, 0 or 'x' даёт 'x'. На этом построен трюк со значением по умолчанию.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект