Рубрики
Без рубрики

Разница между `IS` и` == `- Python Tips

Мы можем сравнить 2 переменных с IS и Python: >>> >>> & g … с меткой Python.

Мы можем сравнить 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”