[Python-Dev] Issue 19332: Guard against changing dict during iteration
Nick Coghlan
ncoghlan at gmail.com
Thu Nov 7 13:29:36 CET 2013
More information about the Python-Dev mailing list
Thu Nov 7 13:29:36 CET 2013
- Previous message: [Python-Dev] Issue 19332: Guard against changing dict during iteration
- Next message: [Python-Dev] Issue 19332: Guard against changing dict during iteration
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 7 Nov 2013 03:18, "Antoine Pitrou" <solipsis at pitrou.net> wrote: > > Le 06/11/2013 06:41, Nick Coghlan a écrit : > >> >> The behaviour of mutating builtin containers while iterating over them >> is formally undefined beyond "it won't segfault" (one of the few such >> undefined behaviours in Python). The associated exceptions are thus >> strictly "best effort given other constraints". > > > Not sure what you mean with "formally undefined". For example, you can perfectly well change a list's contents while iterating over it, and I bet there's a lot of code that relies on that, as in:: > > for i, value in enumerate(mylist): > if some_condition(value): > mylist[i] = some_function(value) > > If you change "builtin containers" to "builtin unordered containers", then you probably are closer to the truth :) I meant changing the length rather than just the contents of an existing entry. Even lists get a little odd if you add and remove entries while iterating (although I agree the sequence case is much better defined than the unordered container case). Cheers, Nick. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20131107/85ef2016/attachment.html>
- Previous message: [Python-Dev] Issue 19332: Guard against changing dict during iteration
- Next message: [Python-Dev] Issue 19332: Guard against changing dict during iteration
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list