On Fri, Dec 6, 2019, 12:47 AM Steven D'Aprano <st...@pearwood.info> wrote:

> On Thu, Dec 05, 2019 at 05:40:05PM -0400, Juancarlo Añez wrote:
> > I just found this code:
> >
> > def get_product_item(jsonld_items):
> >     for item in jsonld_items:
> >         if item['@type'] == 'Product':
> >             return item
> >     else:
> >         return {}
>
> I'm sorry, I can't tell what that is supposed to do. Is the "return {}"
> supposed to be inside the loop? If so, it has been accidentally
> dedented. Is it meant to be outside the loop? The "for-else" is
> redundent, since there is no break.
>

"return", like "break", causes the "else" suite to be skipped.

https://docs.python.org/3/reference/compound_stmts.html#the-for-statement
does not clearly specify this; it only says that the else suite is executed
when the iterator is exhausted or empty, and that "break" skips it. Perhaps
a sentence should be added to clearly and unambiguously state that "return"
skips it also?

>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/NLXONUKK7LDUPDST6WCVDQY2GTEXJNE4/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to