Пусть fs = frozenset([1, 2, 3]). Что произойдёт при вызове fs.add(4)?

AМетод .add(4) сработает: frozenset поддерживает добавление элементов как обычный set
BБудет AttributeError: у frozenset нет метода .add(), объект неизменяемый
CМетод .add(4) молча вернёт None: ничего не изменится, исключения тоже не будет
DЭлемент добавится: при изменении frozenset автоматически становится обычным set
Правильный ответ. frozenset — неизменяемая версия множества, которая не поддерживает методы изменения и поднимает AttributeError при попытке вызвать .add().

Разбор

frozenset отличается от set тем, что его нельзя изменить после создания: у него нет методов add(), remove(), discard() и update(). Поэтому вызов fs.add(4) поднимает AttributeError: 'frozenset' object has no attribute 'add'. Зато именно из-за неизменяемости и хэшируемости frozenset можно использовать как ключ словаря или элемент другого множества — обычный set для этого не годится. Чтобы «добавить» элемент, создают новое множество: fs | {4}.

Проверь себя · 1/3разбор после ответа
Что вернёт выражение "b" in ["a", "b", "c"]?
Тренировать Python в Telegram

Ещё вопросы по теме «Синтаксис и типы данных»