On Tue, Oct 17, 2017 at 2:46 PM, Serhiy Storchaka <storch...@gmail.com> wrote:
> 17.10.17 14:10, Nick Coghlan пише: > >> 1. It's pretty easy to write "for x in y in y" when you really meant to >> write "for x in y", and if "y" is an infinite iterator, the "y in y" part >> will become an unbreakable infinite loop when executed instead of the >> breakable one you intended (especially annoying if it means you have to >> discard and restart a REPL session due to it, and that's exactly where that >> kind of typo is going to be easiest to make) >> > > I think it is better to left this on linters. Just to note that there is currently nothing that would prevent making `for x in y in z` a syntax error. There is nothing meaningful that it could do, really, because y in z can only return True or False (or raise an Exception or loop infinitely). But for an infinite iterable, the right answer may be Maybe ;) ––Koos > I never encountered this mistake and doubt it is common. In any case the > first execution of this code will expose the mistake. > > 2. Containment testing already has a dedicated protocol so containers can >> implement optimised containment tests, which means it's also trivial for an >> infinite iterator to intercept and explicitly disallow containment checks >> if it chooses to do so >> > > But this has non-zero maintaining cost. As the one who made many changes > in itertools.c I don't like the idea of increasing its complexity for > optimizing a pretty rare case. > > And note that the comparison can have side effect. You can implement the > optimization of `x in count()` only for the limited set of builtin types. > For example `x in range()` is optimized only for exact int and bool. You > can't guarantee the finite time for cycle() and repeat() either since they > can emit values of arbitrary types, with arbitrary __eq__. > > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > -- + Koos Zevenhoven + http://twitter.com/k7hoven +
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/