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