[Python-ideas] Inline assignments using "given" clauses
Rob Cliffe
rob.cliffe at btinternet.com
Sun May 13 08:55:48 EDT 2018
On 12/05/2018 23:52, Neil Girdhar wrote:
>
>
> On Sat, May 12, 2018 at 5:54 PM Cameron Simpson <cs at cskk.id.au
> <mailto:cs at cskk.id.au>> wrote:
>
> On 06May2018 02:00, Nick Coghlan <ncoghlan at gmail.com
> <mailto:ncoghlan at gmail.com>> wrote:
> >On 5 May 2018 at 13:36, Tim Peters <tim.peters at gmail.com
> <mailto:tim.peters at 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
>
I don't like the consecutive "given"s. Reading it aloud in English
suggests to me that the second "given" should be evaluated before the
first, which I'm sure is not the intention.
(Just as I think that multiple for-loops inside a comprehension sound
the wrong way round. :-( But that ship has sailed.)
Rob Cliffe
> —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 at cskk.id.au <mailto:cs at cskk.id.au>>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org <mailto:Python-ideas at 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 at googlegroups.com
> <mailto:python-ideas%2Bunsubscribe at googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout.
>
>
> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
> Virus-free. www.avg.com
> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>
>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180513/c9e4ebc3/attachment-0001.html>
More information about the Python-ideas
mailing list