On Mon, Jun 24, 2019 at 6:03 PM Andrew Barnert <abarn...@yahoo.com> wrote:
>
> On Sunday, June 23, 2019, 10:13:07 PM PDT, Chris Angelico <ros...@gmail.com> 
> wrote:
>
> > The biggest problem with this proposal is the way that, being a
> > syntactic construct, it's going to be non-composable.
>
> > # Oops, syntax error
> > with (some_expr as q,
> >         some_other_expr as w):
> >     pass
>
> I don't understand. Are you suggesting that some_expr could be something like 
> "2 if cond else pass", so if not cond, this is supposed to be equivalent to 
> "with ( as q, some_other_expr as w):", which is a SyntaxError (at runtime)? 
> If so, that's the same problem as with most other syntactic locations where 
> an expression can go, like the assignment example I gave earlier.
>

Sorry, I kinda glossed over a lot of details there.

The example that I gave is a SyntaxError, unrelated to the current
proposal. To make it work, you have to remove the parens, and use a
backslash to continue the line. And every now and then, someone
proposes to make the 'with' statement accept the form I gave, because
it would be cleaner. It isn't an easy change, because "with expr as
name" is a syntactic construct; the "expr as name" part cannot be
composed into a larger expression.

The proposed syntax would have the exact same problem:

stuff = [
    foo unless True,
    bar unless False,
    (quux("spam", "eggs", "sausage", "spam")
        unless customer_wants("spam"))
]

This particular example would work if you just removed the parens (it
doesn't need a backslash to continue the line, since it's inside a
list display), but I can pretty much guarantee that people will put
parens around one of these sequences and then wonder why on earth it
doesn't work.

ChrisA
_______________________________________________
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/NGFOPEENZQMELX4SVVKU2NQNQXEBS3CU/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to