Введение
Оператор is в Python используется для проверки, ссылаются ли два переменных на один и тот же объект в памяти. Это отличается от оператора ==, который проверяет, имеют ли два переменных одинаковые значения. В этом практическом занятии мы исследуем, как работает оператор is и как он может быть полезен при программировании на Python. Это важный концепт для понимания, особенно при работе с изменяемыми объектами, такими как списки и словари. В этом практическом занятии мы исследуем использование оператора is в Python с помощью простых и сложных примеров и узнаем, как его можно использовать для написания эффективного и надежного кода.
Базовое использование
В этом шаге мы начнем с самого базового использования оператора is.
- Откройте интерпретатор Python в терминале.
python3
- Определите две переменные,
aиb, и присвойте им одинаковое значение.
a = "Hello"
b = "Hello"
- Выведите адрес в памяти
aиbс использованием функцииid().
print(id(a))
print(id(b))
- Используйте оператор
is, чтобы проверить, ссылаются лиaиbна один и тот же объект.
print(a is b)
Результат выполнения кода выше должен быть True, так как a и b ссылаются на один и тот же объект в памяти.
Неизменяемые против изменяемых объектов
В этом шаге мы исследуем, как оператор is ведет себя с неизменяемыми и изменяемыми объектами.
- Определите две переменные,
cиd, и присвойте им оба пустой список[].
c = []
d = []
- Выведите адрес в памяти
cиdс использованием функцииid().
print(id(c))
print(id(d))
- Используйте оператор
is, чтобы проверить, ссылаются лиcиdна один и тот же объект.
print(c is d)
Результат выполнения кода выше должен быть False, так как c и d - изменяемые объекты, и они не являются одним и тем же объектом в памяти.
- Теперь определите две переменные,
eиf, и присвойте им оба целочисленное значение.
e = 10
f = 10
- Выведите адрес в памяти
eиfс использованием функцииid().
print(id(e))
print(id(f))
- Используйте оператор
is, чтобы проверить, ссылаются лиeиfна один и тот же объект.
print(e is f)
Результат выполнения кода выше должен быть True, так как e и f - неизменяемые объекты, и они используют один и тот же объект в памяти.
Параметры функций
В этом шаге мы исследуем, как оператор is можно использовать с параметрами функций.
- Определите функцию
my_function(), которая принимает два параметра,xиy.
def my_function(x, y):
print(x is y)
- Вызовите функцию
my_function()дважды, один раз с неизменяемыми объектами, а другой раз с изменяемыми объектами.
my_function(10, 10)
my_function([], [])
Результат первого вызова должен быть True, а результат второго вызова должен быть False.
Расширенное использование
В этом шаге мы исследуем некоторые аспекты расширенного использования оператора is.
- Определите класс
MyClassс атрибутомvalue.
class MyClass:
def __init__(self, value):
self.value = value
- Определите два экземпляра класса
MyClass,obj1иobj2, с одинаковым значениемvalue.
obj1 = MyClass("Hello")
obj2 = MyClass("Hello")
- Выведите адрес в памяти
obj1.valueиobj2.valueс использованием функцииid().
print(id(obj1.value))
print(id(obj2.value))
- Используйте оператор
is, чтобы проверить, ссылаются лиobj1.valueиobj2.valueна один и тот же объект.
print(obj1.value is obj2.value)
Результат выполнения кода выше должен быть True, так как атрибут value является неизменяемым объектом, и оба экземпляра используют один и тот же объект в памяти.
- Теперь определите два экземпляра класса
MyClass,obj3иobj4, с изменяемым объектом в качестве значенияvalue.
obj3 = MyClass([])
obj4 = MyClass([])
- Выведите адрес в памяти
obj3.valueиobj4.valueс использованием функцииid().
print(id(obj3.value))
print(id(obj4.value))
- Используйте оператор
is, чтобы проверить, ссылаются лиobj3.valueиobj4.valueна один и тот же объект.
print(obj3.value is obj4.value)
Результат выполнения кода выше должен быть False, так как атрибут value является изменяемым объектом, и оба экземпляра не используют один и тот же объект в памяти.
Резюме
В этом практическом занятии мы изучили оператор is в Python и то, как его можно использовать для проверки, ссылаются ли две переменные на один и тот же объект в памяти. Мы исследовали поведение оператора is как с неизменяемыми, так и с изменяемыми объектами, параметрами функций и экземплярами классов. Изучив оператор is, мы можем писать более эффективный и надежный код на Python.



