On Sat, May 12, 2018 at 5:54 PM Cameron Simpson <
cs@cskk.id.au> wrote:
On 06May2018 02:00, Nick Coghlan <ncoghlan@gmail.com> wrote:
>On 5 May 2018 at 13:36, Tim Peters <tim.peters@gmail.com> wrote:
>> If only one trailing "given" clause can be given per `if` test
>> expression, presumably I couldn't do that without trickery.
>
>I was actually thinking that if we did want to allow multiple assignments,
>and we limited targets to single names, we could just use a comma as a
>separator:
>
> if diff and g > 1 given diff = x - x_base, g = gcd(diff, n):
> return g
>
>Similar to import statements, optional parentheses could be included in the
>grammar, allowing the name bindings to be split across multiple lines:
>
> if diff and g > 1 given (
> diff = x - x_base,
> g = gcd(diff, n),
> ):
> return g
I'm well behind, but... this! This turns "given" into a +0.8 for me.
That's really nice. It reads clearly too.
I was hitherto in the "expression as name" camp, which I gather is already
rejected.
I love given, but that's the one thing I don't like. I prefer this:
if (diff and g > 1
given diff = x - x_base
given g = gcd(diff, n)):
return g
—just like for and if subexpressions. Doing this can also open up weirdness if someone tries to roll something like:
a = f(), # Make a tuple of length 1
into a given statement. Now, where do you up the parentheses?
given (
a = (f(),),
b = whatever?
)
Seems weird.
Cheers,
Cameron Simpson <cs@cskk.id.au>
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
--
---
You received this message because you are subscribed to a topic in the Google Groups "python-ideas" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/python-ideas/CFuqwmE8s-E/unsubscribe.
To unsubscribe from this group and all its topics, send an email to python-ideas+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.