Операторы идентичности (is, is not)

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

В этом тренажере мы разберемся с операторами идентичности `is` и `is not`. Они могут показаться похожими на операторы сравнения `==` и `!=`, но между ними есть ключевое различие. Операторы `is` и `is not` проверяют, указывают ли две переменные на один и тот же объект в памяти, то есть имеют ли они один и тот же идентификатор объекта. В то время как `==` и `!=` сравнивают только значения объектов. В этих заданиях вы научитесь видеть эту разницу, поймете, когда Python создает новые объекты, а когда использует уже существующие, и почему это важно.

Список тем

Один и тот же объект

id: 39966_task_predict_1

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

Выберите правильный вариант ответа
a = [10, 20]
b = a
print(a is b)
Сообщения
Проверить
Показать подсказку

Разные, но одинаковые объекты

id: 39966_task_give_result_1

Здесь создаются два независимых списка, которые содержат одинаковые элементы. Что вернет оператор `is` при проверке, являются ли эти два списка одним и тем же объектом? Введите `True` или `False`.

Что должно получиться?
list_a = [1, 2, 3]
list_b = [1, 2, 3]
print(list_a is list_b)
Сообщения
Проверить
Показать подсказку

Проверка на None

id: 39966_task_replace_1

В Python существует специальный объект `None` для обозначения отсутствия значения. Согласно руководству по стилю PEP 8, для сравнения с `None` следует использовать определенный оператор. Заполните пропуск, чтобы код корректно проверял, что переменной `result` не присвоено значение.

Заполните пропуски
result = None
# Проверяем, что результат еще не получен
if result input1S None:
    print("Расчет еще не выполнен.")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Исправьте ошибку сравнения

id: 39966_task_error_1

В коде допущена стилистическая и потенциально опасная ошибка при сравнении со значением `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("Пользователь не найден.")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Магия кеширования целых чисел

id: 39966_task_predict_2

Python для оптимизации хранит в памяти готовые объекты для небольших целых чисел. Однако это работает только в определенном диапазоне. Что выведет код, если числа выходят за пределы этого диапазона?

Выберите правильный вариант ответа
a = 257
b = 257
print(a is b)
Сообщения
Проверить
Показать подсказку

Сортировка по результату: True или False?

id: 39966_task_sort_1

Проанализируйте каждое выражение и распределите их по двум категориям в зависимости от того, какой результат (`True` или `False`) они вернут. Это проверит ваше понимание работы `is` с разными типами данных.

Перетяните элементы в соответствующие блоки
Выражение вернет True
Выражение вернет False
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)
Сообщения
Проверить
Показать подсказку

Заполните пропуски из банка

id: 39966_task_bank_fill_1

Используя операторы из банка, составьте правильные проверки. `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
!=
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сопоставьте оператор и его назначение

id: 39966_task_compare_1

Операторы `is`, `is not`, `==` и `!=` служат для разных видов проверок. Сопоставьте каждый оператор в правой колонке с его точным описанием в левой.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Проверяет, что операнды ссылаются на ОДИН И ТОТ ЖЕ объект
Проверяет, что операнды имеют ОДИНАКОВОЕ значение
Проверяет, что операнды ссылаются на РАЗНЫЕ объекты
Проверяет, что операнды имеют РАЗНЫЕ значения
is not
==
!=
is
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру