Влияет ли «не» на весь оператор if в python?

По сути, мой вопрос заключается в том, влияет ли выражение not на все выражение if, даже если я добавил в него or или and, или оно влияет только на ту часть, которая не начинается с or или and?

ИЗМЕНИТЬ:

Некоторые люди пытались отправить мне еще один подобный вопрос (спасибо за помощь!), но он говорил об иерархии, в то время как я говорил о том, влияет ли not на весь оператор if.


person Bored Comedy    schedule 21.01.2020    source источник


Ответы (1)


Таким образом, операторы Python работают так, что not будет влиять только на следующее выражение true/false, с которым он сталкивается. not a and b будет искать случай, когда a ложно, а b истинно, а not (a and b) будет искать случай, когда оба a and b неверны одновременно. Вы даже можете сделать b and not a, и это даст тот же результат, что и not a and b.

person Karan Shishoo    schedule 21.01.2020
comment
Хотя b and not a может дать тот же результат, что и not a and b, они не идентичны. В Python есть логические операторы короткого замыкания: and — это оператор короткого замыкания, поэтому он оценивает второй аргумент только в том случае, если первый истинен. - person jarmod; 21.01.2020
comment
@jarmod правда, я отредактирую его, чтобы сделать его более понятным - person Karan Shishoo; 21.01.2020
comment
Вы написали НЕ-И (not (a and b)), но вы описываете НЕ-ИЛИ (возвращает истину, когда и a, и b ложны). - person wjandrea; 23.01.2020