is и is not в Python

Как работают операторы is и is not в Python, примеры использования и в чем отличие «==» от is

В языке программирования Python есть различные операторы для сравнения, включая операторы идентичности is и is not.

Они позволяют проверить, ссылаются ли два объекта на одно и то же место в памяти, т.е. являются ли они идентичными.

В этой статье мы разберем, как работают операторы идентичности is и is not, когда их следует использовать и как отличить их от операторов равенства.

Оператор идентичности is

Оператор is сравнивает два объекта на идентичность, т.е. проверяет, ссылаются ли они на один и тот же объект в памяти. Важно понимать, что is не проверяет равенство значений объектов, а только их идентичность.

Примеры использования оператора is:

a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(a is b)  # True, так как a и b ссылаются на один и тот же объект
print(a is c)  # False, так как a и c ссылаются на разные объекты, хотя их значения равны
x = None
y = None

print(x is y)  # True, так как None является синглтоном, и существует только один экземпляр None

Оператор идентичности is not

Оператор is not является противоположностью оператора is. Он возвращает True, если два объекта НЕ ссылаются на одно и то же место в памяти, и False в противном случае.

Примеры использования оператора is not:

a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(a is not b)  # False, так как a и b ссылаются на один и тот же объект
print(a is not c)  # True, так как a и c ссылаются на разные объекты

Разница между операторами идентичности и равенства

Операторы идентичности (is и is not) сравнивают объекты на идентичность, в то время как операторы равенства (== и !=) сравнивают объекты на равенство их значений.

Примеры различий между операторами идентичности и равенства:

a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(a == b) # True, так как значения a и b равны
print(a == c) # True, так как значения a и c равны

print(a is b) # True, так как a и b ссылаются на один и тот же объект
print(a is c) # False, так как a и c ссылаются на разные объекты, хотя их значения равны

Когда использовать операторы идентичности

Операторы идентичности используются, когда необходимо проверить, являются ли две переменные ссылками на один и тот же объект. Некоторые типичные сценарии использования:

1. Проверка на None:

x = None
y = 42

if x is None:
    print("x is None")
if y is not None:
    print("y is not None")

2. Определение, является ли переменная ссылкой на глобальный объект:

global_list = [1, 2, 3]

def modify_list(lst):
    if lst is global_list:
        print("lst ссылается на global_list")

modify_list(global_list)  # Вывод: "lst ссылается на global_list"

В случаях, когда требуется сравнение значений объектов, следует использовать операторы равенства.

Заключение

Операторы идентичности is и is not в Python используются для сравнения объектов на идентичность, то есть проверки того, ссылаются ли они на одно и то же место в памяти. Они отличаются от операторов равенства, которые сравнивают значения объектов.

Содержание: