[Python-Dev] Making sure dictionary adds/deletes during iteration always raise exception
Guido van Rossum
guido at python.org
Tue Dec 13 12:48:35 EST 2016
On Tue, Dec 13, 2016 at 8:52 AM, Eric V. Smith <eric at trueblade.com> wrote:
> > On Dec 13, 2016, at 11:42 AM, Raymond Hettinger <
> raymond.hettinger at gmail.com> wrote:
> >> On Dec 13, 2016, at 1:51 AM, Max Moroz <maxmoroz at gmail.com> wrote:
> >> Would it be worth ensuring that an exception is ALWAYS raised if a key
> >> is added to or deleted from a dictionary during iteration?
> >> <snip>
> >> I suspect the cost of a more comprehensive error reporting is not
> >> worth the benefit, but I thought I'd ask anyway.
> > I think what we have has proven itself to be good enough to detect the
> common cases, and it isn't worth it to have dicts grow an extra field which
> has to be checked or updated on every operation.
> I agree that we shouldn't complicate things, but wouldn't PEP 509 be a
> cheap way to check this?
IIUC the private version gets updated every time the dict gets modified --
but what we need here should only trigger when a key is added or removed,
not when a value is updated. (It's a guarantee that updating the value
doesn't change the iteration order -- though perhaps it isn't spelled out,
I agree with Raymond that we should not change anything.
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-Dev