[Python-ideas] PEP 572: Statement-Local Name Bindings, take three!

Steve Dower steve.dower at python.org
Sun Apr 8 18:28:55 EDT 2018


# Dict display
    data = {
        key_a: local_a := 1,
        key_b: local_b := 2,
        key_c: local_c := 3,
    }

Isn’t this a set display with local assignments and type annotations? :o)

(I’m -1 on all of these ideas, btw. None help readability for me, and I read much more code than I write.)

Top-posted from my Windows phone

From: Nick Coghlan
Sent: Sunday, April 8, 2018 6:27
To: Chris Angelico
Cc: python-ideas
Subject: Re: [Python-ideas] PEP 572: Statement-Local Name Bindings,take three!

On 23 March 2018 at 20:01, Chris Angelico <rosuav at gmail.com> wrote:
> Apologies for letting this languish; life has an annoying habit of
> getting in the way now and then.
>
> Feedback from the previous rounds has been incorporated. From here,
> the most important concern and question is: Is there any other syntax
> or related proposal that ought to be mentioned here? If this proposal
> is rejected, it should be rejected with a full set of alternatives.

I was writing a new stdlib test case today, and thinking about how I
might structure it differently in a PEP 572 world, and realised that a
situation the next version of the PEP should discuss is this one:

    # Dict display
    data = {
        key_a: 1,
        key_b: 2,
        key_c: 3,
    }

    # Set display with local name bindings
    data = {
        local_a := 1,
        local_b := 2,
        local_c := 3,
   }

    # List display with local name bindings
    data = {
        local_a := 1,
        local_b := 2,
        local_c := 3,
   }

    # Dict display
    data = {
        key_a: local_a := 1,
        key_b: local_b := 2,
        key_c: local_c := 3,
    }

    # Dict display with local key name bindings
    data = {
        local_a := key_a: 1,
        local_b := key_b: 2,
        local_c := key_c: 3,
    }

I don't think this is bad (although the interaction with dicts is a
bit odd), and I don't think it counts as a rationale either, but I do
think the fact that it becomes possible should be noted as an outcome
arising from the "No sublocal scoping" semantics.

Cheers,
Nick.

P.S. The specific test case is one where I want to test the three
different ways of spelling "the current directory" in some sys.path
manipulation code (the empty string, os.curdir, and os.getcwd()), and
it occurred to me that a version of PEP 572 that omits the sublocal
scoping concept will allow inline naming of parts of data structures
as you define them.


-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
_______________________________________________
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/20180408/263653d6/attachment.html>


More information about the Python-ideas mailing list