I'll lend a supportive voice here: I like the proposal and would probably make use of this kind of syntax quite a bit, but I think the requirement of yield is definitely a necessity. Too much ambiguity without it.

And adding the yield, IMO, doesn't clutter things up too badly. Using one of the code examples, it looks pretty good to me:

        for row in matrix:
                for cell in row:
                    yield f(cell)

Of course, anything that does not contain a yield statement would need to be a syntax error or it could cause problems when refactoring from "regular" looping code, and forgetting to add the yield.


"I've never met a Kentucky man who wasn't either thinking about going home or actually going home." - Happy Chandler

On Fri, Feb 21, 2020 at 3:40 PM Alex Hall <alex.mojaki@gmail.com> wrote:
OK, I think the verdict is in and I will not try to debate it.

> Does opening a [{( and having any : statements inside
> just imply one more indentation level? Or can the statements inside
> be validly less indented than the line containing the = [...
> opening bracket?

I think this is a fun question. I can't think of any good reason to allow indenting less than the containing statement, but I'm also wondering if there's edge cases I might be missing. If not, then maybe we can indeed just require adding another indentation level. And maybe that means that statements inside expressions wouldn't require a Rube Goldberg machine ;)

If anyone is curious, I initially wrote [a much larger proposal with several overlapping subproposals in which `if`, `try`, and `def` could all be used as expressions](https://www.reddit.com/r/Python/comments/f5wm1d/proposal_compound_statement_expressions_complex/). I figured that was hopelessly ambitious and just submitted the part I liked best.
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/EOUPQCV6EA6H6KDWWVEAXNDP7S5BM3MF/
Code of Conduct: http://python.org/psf/codeofconduct/