Загружаем изображение…
Python умеет делать словарь неизменяемым без копирования данных!
Обычно для защиты конфигов и общего состояния делают копию словаря, что создаёт лишние аллокации памяти.
MappingProxyType создаёт read-only proxy поверх словаря — запись через него становится невозможной, но данные не копируются.
При этом proxy остаётся живым: если исходный словарь изменится, изменения автоматически отразятся и в read-only view.
Это особенно полезно для конфигов, внутренних API, общего состояния и защиты данных внутри библиотек.
Python Ready | #совет
Обычно для защиты конфигов и общего состояния делают копию словаря, что создаёт лишние аллокации памяти.
safe = dict(config)MappingProxyType создаёт read-only proxy поверх словаря — запись через него становится невозможной, но данные не копируются.
readonly["debug"] = True # TypeErrorПри этом proxy остаётся живым: если исходный словарь изменится, изменения автоматически отразятся и в read-only view.
config["debug"] = TrueЭто особенно полезно для конфигов, внутренних API, общего состояния и защиты данных внутри библиотек.
def get_settings():
return MappingProxyType(settings)MappingProxyType позволяет отдавать наружу read-only view словаря без копирования и без риска мутации через возвращённый объект.Python Ready | #совет