Мы можем сравнить 2 переменных с это
и ==.
в Python:
>>> a = None >>> b = None >>> a is b True >>> a == b True
Но в чем разница между этими двумя?
Краткий ответ: Это
сравнивает два переменных ID, а ==
сравнивает их значение.
Давайте посмотрим на целочисленный пример:
>>> a = 2 >>> b = 2 >>> a is b True >>> a == b True >>> id(a) 4343713584 >>> id(b) 4343713584
Мы можем видеть А
а также b
Значение равна, и потому что их идентификатор одинаковы, поэтому это
возвращает правда тоже.
Давайте посмотрим другой пример, который это
Возвращает «ложь»:
>>> a = 257 >>> b = 257 >>> a is b False >>> a == b True >>> id(a) 4347529424 >>> id(b) 4347529360
Пусть оба А
и B
Быть 257, мы можем видеть их ценности равны, но это
Возвращает false.
Давайте попробуем 256:
>>> a = 256 >>> b = 256 >>> a is b True >>> a == b True >>> id(a) 4343721712 >>> id(b) 4343721712
Подождите, если мы используем 256, оба это
и ==
Возвращает true, потому что их идентификатор и значение одинаковы. Но если мы просто увеличиваем от одного до 257, это
вернет ложь, так что случилось здесь? 257 специального числа в Python?
Ответ, чтобы сохранить некоторую скорость, Python положил несколько небольших целых чисел внутри бассейна. У всех нас есть опыт, подобный использованию цикла, чтобы увеличить целое число от 1 до 10, так как эти маленькие целые числа часто используются, Python создаст их один раз, и если есть другая переменная, пытаясь его использовать, Python не создаст новый Один, он просто даст эту переменную ссылку на этот номер, который уже создан в пуле.
По умолчанию Python поставил целые числа между [-5, 257) на этот небольшой целочисленный пул, если вы заинтересованы, вы можете проверить Исходный код Cpython здесь Отказ
Так что это объяснило, почему это
и ==
оба вернулись на 256. Но для 257, Python создал два разделенных целочисленного объекта для А
а также B
Таким образом, их идентификатор разные.
Мы можем проверить это с -5 и -6 тоже:
>>> a = -5 >>> b = -5 >>> a is b True >>> a = -6 >>> b = -6 >>> a is b False
Ссылка
Оригинал: “https://dev.to/0xbf/difference-between-is-and-python-tips-m7d”