В этом тренажере мы разберемся с операторами идентичности `is` и `is not`. Они могут показаться похожими на операторы сравнения `==` и `!=`, но между ними есть ключевое различие. Операторы `is` и `is not` проверяют, указывают ли две переменные на один и тот же объект в памяти, то есть имеют ли они один и тот же идентификатор объекта. В то время как `==` и `!=` сравнивают только значения объектов. В этих заданиях вы научитесь видеть эту разницу, поймете, когда Python создает новые объекты, а когда использует уже существующие, и почему это важно.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Один и тот же объект
Переменной `b` присвоили значение переменной `a`. Обе переменные теперь ссылаются на один и тот же список. Проанализируйте код и предскажите, что выведет оператор `is`, который проверяет идентичность объектов.
a = [10, 20]
b = a
print(a is b)Разные, но одинаковые объекты
Здесь создаются два независимых списка, которые содержат одинаковые элементы. Что вернет оператор `is` при проверке, являются ли эти два списка одним и тем же объектом? Введите `True` или `False`.
list_a = [1, 2, 3]
list_b = [1, 2, 3]
print(list_a is list_b)Проверка на None
В Python существует специальный объект `None` для обозначения отсутствия значения. Согласно руководству по стилю PEP 8, для сравнения с `None` следует использовать определенный оператор. Заполните пропуск, чтобы код корректно проверял, что переменной `result` не присвоено значение.
result = None
# Проверяем, что результат еще не получен
if result input1S None:
print("Расчет еще не выполнен.")Исправьте ошибку сравнения
В коде допущена стилистическая и потенциально опасная ошибка при сравнении со значением `None`. Найдите строку с ошибкой и исправьте ее в соответствии с рекомендациями PEP 8.
def get_user_data(user_id): # Представим, что эта функция ищет данные в базе if user_id == 1: return {'name': 'Alice'} return None user = get_user_data(2) if user == None: print("Пользователь не найден.")Магия кеширования целых чисел
Python для оптимизации хранит в памяти готовые объекты для небольших целых чисел. Однако это работает только в определенном диапазоне. Что выведет код, если числа выходят за пределы этого диапазона?
a = 257
b = 257
print(a is b)Сортировка по результату: True или False?
Проанализируйте каждое выражение и распределите их по двум категориям в зависимости от того, какой результат (`True` или `False`) они вернут. Это проверит ваше понимание работы `is` с разными типами данных.
a = 1000; b = 1000; print(a is b)nums = [1]; copy_nums = nums; print(copy_nums is nums)s1 = "python"; s2 = "python"; print(s1 is s2)val = True; print(val is True)list1 = []; list2 = []; print(list1 is not list2)t1 = (); t2 = (); print(t1 is t2)Заполните пропуски из банка
Используя операторы из банка, составьте правильные проверки. `list2` является точной копией `list1` по значению, но не по объекту. `list3` — это та же самая переменная, что и `list1`.
list1 = [1, 2]
list2 = [1, 2]
list3 = list1
# Проверка на равенство значений
if list1 input1S list2:
print("Списки равны по значению")
# Проверка на идентичность объектов
if list1 input2S list3:
print("Это один и тот же список")Сопоставьте оператор и его назначение
Операторы `is`, `is not`, `==` и `!=` служат для разных видов проверок. Сопоставьте каждый оператор в правой колонке с его точным описанием в левой.
is not==!=is