[Python-Dev] PEP 416: Add a frozendict builtin type
Victor Stinner
victor.stinner at gmail.com
Sun Mar 4 00:11:25 CET 2012
Le 29/02/2012 19:21, Victor Stinner a écrit :
> Rationale
> =========
>
> (...) Use cases of frozendict: (...)
I updated the PEP to list use cases described in the other related
mailing list thread.
---
Use cases:
* frozendict lookup can be done at compile time instead of runtime
because the mapping is read-only. frozendict can be used instead of a
preprocessor to remove conditional code at compilation, like code
specific to a debug build.
* hashable frozendict can be used as a key of a mapping or as a member
of set. frozendict can be used to implement a cache.
* frozendict avoids the need of a lock when the frozendict is shared
by multiple threads or processes, especially hashable frozendict. It
would also help to prohibe coroutines (generators + greenlets) to modify
the global state.
* frozendict helps to implement read-only object proxies for security
modules. For example, it would be possible to use frozendict type for
__builtins__ mapping or type.__dict__. This is possible because
frozendict is compatible with the PyDict C API.
* frozendict avoids the need of a read-only proxy in some cases.
frozendict is faster than a proxy because getting an item in a
frozendict is a fast lookup whereas a proxy requires a function call.
* use a frozendict as the default value of function argument: avoid
the problem of mutable default argument.
---
Victor
More information about the Python-Dev
mailing list