On Tue, Oct 8, 2019 at 2:18 PM Anders Hovmöller <bo...@killingar.net> wrote:
> > > On 8 Oct 2019, at 20:07, Todd <toddr...@gmail.com> wrote: > > > > On Tue, Oct 8, 2019 at 1:30 PM Anders Hovmöller <bo...@killingar.net> > wrote: > >> >> >> On 8 Oct 2019, at 19:19, Caleb Donovick <donov...@cs.stanford.edu> wrote: >> >> >> >>> Because >>> >>> >>> dict(foo=:1) >>> File "<string>", line 1 >>> dict(foo=:1) >>> ^ >>> SyntaxError: invalid syntax >>> >> >> I don't see how that's an argument, we are talking about a syntax >> extension. Slice builder syntax is only every allowed in a subscript. >> Edit my original grammar change proposal to: >> >> ``` >> subscriptlist: ... | kwargsubscript (',' kwargsubscript )* [','] >> kwargsubscript: NAME '=' subscript >> ``` >> >> Now slices are allowed in keyword arguments. >> >> >> I wasn't making an argument, I was wondering what exactly we are even >> discussing. It seems like people are inventing new syntax willy nilly in >> this thread and I am getting very confused :) >> >> / Anders >> >> > I thought we were talking about allowing __getitem__ to support keywords. > I assumed the keywords would use the same syntax as positional values, and > converting colons to slice objects is part of that syntax. So this isn't > new syntax, it is just making the positional and keyword syntaxes the same. > > > I don't see it. Can you give examples of all the variations of slicing and > their keyword equivalent so I understand what you mean? I'll write out the > slicing variants and you can fill in how it would look with keyword > arguments: > > x[:] > x[a:] > x[-a:] > x[a:b] > x[-a:b] > x[a:-b] > x[-a:-b] > x[:b] > x[:-b] > > > The colon operation would be converted to slices identically to how it is with positional arguments, it is just that those slices would assigned to values in a dict (or some other mapping) instead of values in a tuple. Otherwise it would work exactly the same. x[:] is x[slice(None, None)] x[foo=:] is x[foo=slice(None, None)] x[a:] is x[slice(a, None)] x[foo=a:] is x[foo=slice(a, None)] x[-a:] is x[slice(-a, None)] x[foo=-a:] is x[foo=slice(-a, None)] x[a:b] is x[slice(a, b)] x[foo=a:b] is x[foo=slice(a, b)] x[-a:b] is x[slice(-a, b)] x[foo=-a:b] is x[foo=slice(-a, b)] x[a:-b] is x[slice(a, -b)] x[foo=a:-b] is x[foo=slice(a, -b)] x[-a:-b] is x[slice(-a, -b)] x[foo=-a:-b] is x[foo=slice(-a, -b)] x[:b] is x[slice(None, b)] x[foo=:b] is x[foo=slice(None, b)] x[:-b] is x[slice(None, -b)] x[foo=:-b] is x[foo=slice(None, -b)] If you look at multiple indices, x[a, -b:c] is x[a, slice(-b, c)] x[foo=a, bar=-b:c] is x[foo=a, bar=slice(-b, c)]
_______________________________________________ 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/7FAT73WY6CKCCWB2ZQPMZSAXV4CPFJLX/ Code of Conduct: http://python.org/psf/codeofconduct/