frozenset: add vs | — что напечатает программа

frozenset: add vs | — что напечатает программа

@python_quiz

Разберем этот квиз

Кратко: код пытается изменить неизменяемый объект frozenset методом add, ловит ошибку и использует оператор объединения |, после чего печатает длину набора и проверку вхождения элемента.

Исходный код:

python

Разбор по шагам

  • frozenset([1, 2, 3]) создаёт неизменяемый набор {1, 2, 3}.
  • У frozenset нет метода add; вызов data.add(4) приводит к AttributeError.
  • Исключение перехватывается в блоке except.
  • Операция data = data | {4} создаёт новое множество, являющееся объединением исходного frozenset и множества {4}. Результат — новый frozenset с элементами 1, 2, 3, 4.
  • print(len(data), 3 in data) печатает длину этого нового набора (4) и результат проверки наличия 3 в наборе (True).

Пример выполнения и вывод:

python
text

Анализ вариантов ответов

  • "Ошибка AttributeError и ничего не выводится" — неверно. Исключение перехватывается, поэтому программа продолжает работу и выводит результат.
  • "Выведет: 3 False" — неверно. Длина набора после объединения составляет 4, а элемент 3 по‑прежнему в наборе.
  • "Выведет: 4 True" — соответствует реальному поведению программы: создаётся новый набор из четырёх элементов, 3 входит в него.
  • "Выведет: 4 False" — неверно по части проверки принадлежности: 3 остался в наборе, проверка даёт True.

Дополнительные пояснения

  • Для изменяемых множеств (set) метод add существует и добавляет элемент на месте:
python
  • Для frozenset изменение невозможно; но операции объединения/пересечения/разности возвращают новые frozenset:
python

Вывод

  • В коде предусмотрена обработка AttributeError, поэтому вместо ошибки создаётся новый frozenset с элементом 4, и итоговый вывод — 4 True. Это хорошая демонстрация отличий между изменяемыми и неизменяемыми коллекциями в Python и того, как работать с ними безопасно.

Report Page