On Thu, 2020-04-16 at 21:21 -0700, Andrew Barnert via Python-ideas
wrote:
> On Apr 16, 2020, at 20:48, oliveira.rodrig...@gmail.com wrote:
> > In Javascript ES6 they don't have sets built like python so `{}`
> > always refers to objects being constructed. It does indeed support
> > implicit key: value pairs, so in ES6 `{ a: a, b: x, c: c }` is
> > equivalent to `{ a, b: x, c }`. This is okay for Javascript users
> > because they would not thought it as sets and the only obvious
> > assumption to make is that parameters are being implicitly assigned
> > to members. This is not the case in Python so I would refrain from
> > changing dictionary literals syntax.
> 
> Obviously the exact same syntax as ES6 doesn’t work in Python,
> because it would be not just confusing but ineradicably ambiguous
> with sets.
> 
> But I don’t see why that rules out the “bare colon” form that I and
> someone else apparently both proposed in separate sub threads of this
> thread:
> 
>     { :a, "b": x, :c }
> 
> as shorthand for:
> 
>     { "a": a, "b": x, "c": c }
> 

It likely does not matter, but one argument in favor of only applying
such syntax to function calls is that in function calls there is no
ambiguity that "a" is a string:

    dict(a=a)

cannot possibly be thought to mean:

   {a: a}

instead of:

   {"a": a}

That may be a pretty moot point, but if you have a dictionary that does
not use strings as keys things might just a tiny bit strange?

- Sebastian


> There’s no problem for the parser. Make a trivial change to the
> grammar to add a `":" identifier` alternative to dict display items,
> and nothing becomes ambiguous.
> 
> And I don’t think it would be confusing to a human reader. It can’t
> possibly be a set, because colons are what make a dict display not a
> set display, and there are colons.
> 
> And I think extending dict display syntax is more powerful and less
> disruptive than extending call syntax. It means you can refactor the
> {…} in a **{…} if the call gets too unwieldy; it means calls and
> other places with ** unpacking remain consistent; etc.
> 
> 
> _______________________________________________
> 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/IEPZ7WBQC6FOG3IYHGQV4IJEZUBJHSUO/
> Code of Conduct: http://python.org/psf/codeofconduct/

Attachment: signature.asc
Description: This is a digitally signed message part

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

Reply via email to