On Sat, Aug 1, 2020 at 1:43 PM Steven D'Aprano firstname.lastname@example.org wrote:
Some years ago, someone (I think it was Nick Coghlan?) proposed a standard solution for this issue, a context manager + decorator function that guarded against a specific exception. Nothing much came of it, but I did experiment with the idea, and got something which you could use like this:
with exception_guard(StopIteration): first = next(iter(mydict.items()))
My understanding of this is that 'first' is unassigned if StopIteration happens.
or like this:
safenext = exception_guard(StopIteration)(next) first = safenext(iter(mydict.items()))
My understanding of this is that I am confused. What does safenext return?