On Tue, 18 Mar 2014 09:52:05 +0200 Maciej Fijalkowski <fij...@gmail.com> wrote: > > We're thinking about doing an optimization where say: > > if x in d: > return d[x] > > where d is a dict would result in only one dict lookup (the second one > being constant folded away). The question is whether it's ok to do it, > despite the fact that it changes the semantics on how many times > __eq__ is called on x.
I don't think it's ok. If the author of the code had wanted only one lookup, they would have written: try: return d[x] except KeyError: pass I agree that an __eq__ method with side effects is rather bad, of course. What you could do is instruct people that the latter idiom (EAFP) performs better on PyPy. Regards Antoine. _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com