
On Tue, Oct 8, 2019, at 13:57, Steven D'Aprano wrote:
It is confusing as hell. When I saw this
da[space=0, time=:2]
I read it as a slice:
da[ slice( (space=0, time=), 2, None) ]
and thought "That must be a typo, because the time keyword doesn't have a value."
Do you read [0,:2] as slice((0,), 2) as well? Is [0:1, 2:3] slice(0, (1, 2), 3) or (slice(0, 1), slice(2, 3))? [it is the latter.] Slices are already allowed within subscripting, and already have higher precedence than comma.
And combining slice syntax with keywords in the same call is a recipe for over-complicated, confusing subscripts, which is why Caleb initially suggested you can use one, or the other, but not both.
I'm not sure the topic of slice syntax had been mentioned yet... as I recall it, what Caleb suggested was that you couldn't use positional arguments and keyword arguments in the same call. Incidentally, I don't agree with the reasoning there - principle of least surprise suggests making the rules as close to function call syntax as possible, with the exception that values can be slices.