[Python-ideas] Inline assignments using "given" clauses

Neil Girdhar mistersheik at gmail.com
Sat May 12 18:52:22 EDT 2018


On Sat, May 12, 2018 at 5:54 PM Cameron Simpson <cs at cskk.id.au> wrote:

> On 06May2018 02:00, Nick Coghlan <ncoghlan at gmail.com> wrote:
> >On 5 May 2018 at 13:36, Tim Peters <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

—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>
> _______________________________________________
> 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/
>
> --
>
> ---
> 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.
> For more options, visit https://groups.google.com/d/optout.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180512/cfb5209c/attachment.html>


More information about the Python-ideas mailing list