Для интерфейса словаря только для чтения используйте types.MappingProxyType. Это представление, а не глубокая неизменяемость: изменения исходного словаря остаются видны.
Как сделать структуру данных, в которую нельзя вставлять или изменять значения, но можно получать по ключу?
Для интерфейса словаря только для чтения используйте types.MappingProxyType. Это представление, а не глубокая неизменяемость: изменения исходного словаря остаются видны.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для интерфейса словаря только для чтения используйте types.MappingProxyType. Это представление, а не глубокая неизменяемость: изменения исходного словаря остаются видны.
Например, view = MappingProxyType(data) позволяет читать view[key], но запрещает присваивание и удаление через view. Для независимого поверхностного снимка оберните dict(data). Вложенные списки и словари при этом остаются изменяемыми; при необходимости их тоже нужно преобразовать в неизменяемые структуры. Такой объект защищает интерфейс от случайной записи, а не служит границей безопасности для недоверенного кода.
Источник: docs.python.org.