Ошибка сравнения строк Python - PullRequest
0 голосов
/ 19 марта 2019

Я только что наткнулся на то, что мне кажется ошибкой:

var = "2"
if var is "" or "1":
    print(var)

Этот фрагмент кода возвращает «2», поскольку я ожидаю, что он ничего не печатает.

Может кто-нибудь объяснить этот результатмне?

Проверено на 2.7 и 3.4

1 Ответ

1 голос
/ 19 марта 2019
  1. Ваше выражение анализируется как (var is "") or "1", что всегда истинно, потому что "1" - это истина.

  2. Если вы добавите скобки, чтобы получить var is ("" or "1"), это эквивалентно var is True, потому что "" or "1" - это True, потому что "1" - это True-ish.

  3. Сравнение строк с is сопряжено с опасностью, поскольку оператор is проверяет идентичность , а не равенство.

Вы, вероятно, хотите var in ("", "1")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...