On Sat, Aug 29, 2020 at 7:30 PM Steven D'Aprano <st...@pearwood.info> wrote:

> I don't think that anyone wants adding a keyword to a single-valued
> subscript to change it to a tuple. At least, I really hope that nobody
> wants this!
>
> So given the current behaviour:
>
>     obj[1]  # calls __getitem__(1)
>     obj[1,]  # calls __getitem__((1,))
>
> I expect that the first will be the most common. If we add a keyword to
> the subscript:
>
>     obj[1, a=3]
>
> I would expect that the it turns into `__getitem__(1, a=3)` which is
> almost surely what the reader and coder expects. It would be quite weird
> for the subscript 1 to turn into a tuple just because I add a keyword.
>
> That does leave the second case a little trickier to add a keyword to,
> it would require a pair of parens to disambiguate it from above:
>
>     obj[(1,), a=3]
>
> but I think that's likely to be obvious to the developer who is adding
> in the keyword where previously no keyword existed.
>

 That's a fair ruling. In general, when keywords are present, the rule that
you can always omit an outermost pair of parentheses is no longer true.
That is, d[(...)] and d[...] are always equivalent regardless what "..."
stands for, as long as (...) is a valid expression (which it isn't if there
are slices involved). Example:
```
d[1]  ~~~  d[(1)]
d[1,]  ~~~  d[(1,)]
d[1, 2]  ~~~  d[(1, 2)]
```
But there is absolutely no such rule if keywords are present.

FYI, Jonathan's post (once I "got" it) led me to a new way of reasoning
about the various proposals (__keyfn__, __subscript__ and what I will keep
calling "Steven's proposal") based on what the compiler and interpreter
need to do to support this corner case. My tentative conclusion is that
Steven's proposal is superior. But I have been reviewing my reasoning and
pseudo-code a few times and I'm still not happy with it, so posting it will
have to wait.

-- 
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him **(why is my pronoun here?)*
<http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________
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/4XET4ABXNKDXEWFUPYGBZLURLJPE6G7T/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to