New We are sorting MAX channels into categories and territories. Read the news
Loading image…

Python умеет делать словарь неизменяемым без копирования данных!



Обычно для защиты конфигов и общего состояния делают копию словаря, что создаёт лишние аллокации памяти.
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 | #совет
Views: 314
Open in MAX Report an inaccuracy

Report an inaccuracy

Describe what needs fixing. If you have a source, add a link.

You are leaving datool.ru

The link leads to an external website. datool.ru is not responsible for its content — check the address before entering passwords or payment details.

Redirecting in 10 s

Go