[Python-ideas] Add stop=exception option to next() (was Re: PEP 479 and take())
Antoine Pitrou
solipsis at pitrou.net
Sat Dec 13 23:36:33 CET 2014
On Sat, 13 Dec 2014 17:31:36 -0500
Terry Reedy <tjreedy at udel.edu> wrote:
> On 12/13/2014 7:45 AM, Oscar Benjamin wrote:
> > On 10 December 2014 at 18:35, Guido van Rossum <guido at python.org> wrote:
>
> > If you had both next() and take() to choose from then the only time
> > next() would be preferable is when you want to leak StopIteration (a
> > pattern that is now largely broken by PEP 479).
> >
> >> BTW did you know that next(iterator, default) returns default if the
> >> iterator is exhausted? IOW this will never raise StopIteration. It's similar
> >> to dict.get(key, default) or getattr(obj, attrname, default).
> >
> > I more often find that I want an error than a default value and of
>
> I once proposed, either here or on python-list, and propose again,
> that the signature of next be expanded so that the user could specify
> the ending exception. If possible, the stop object could either be an
> exception class, which would be called with a generic message, or an
> exception instance.
>
> Then the awkward
>
> try:
> item = next(it)
> except StopIteration:
> raise ValueError('iterable must not be empty') from None
I don't remember ever needing to write such code.
Regards
Antoine.
More information about the Python-ideas
mailing list