Estoy navegando a través del módulo ast
de Python y no puedo entender la definición de los segmentos:
slice = Ellipsis | Slice(expr? lower, expr? upper, expr? step) | ExtSlice(slice* dims) | Index(expr value)
Hasta ahora, sé que Ellipsis
es [...]
, Slice
es la notación [start:end:step]
habitual, el Index
es [index]
, pero ¿qué notación es ExtSlice
?
Una división extendida es una división con varias partes que utiliza alguna característica específica de la división.
Una característica específica de la porción es algo como ...
(una elipsis literal) o una :
(un separador de prueba).
Entonces, un ejemplo donde ExtSlice
está involucrado para una expresión como o[...:None]
o o[1,2:3]
.
Aquí hay algunos ejemplos que demuestran esto:
>>> compile('o[x]', '', 'exec', PyCF_ONLY_AST).body[0].value.slice <_ast.Index object at 0xb72a9e6c> >>> compile('o[x,y]', ' ', 'exec', PyCF_ONLY_AST).body[0].value.slice <_ast.Index object at 0xb72a9dac> >>> compile('o[x:y]', ' ', 'exec', PyCF_ONLY_AST).body[0].value.slice <_ast.Slice object at 0xb72a9dcc> >>> compile('o[x:y,z]', ' ', 'exec', PyCF_ONLY_AST).body[0].value.slice <_ast.ExtSlice object at 0xb72a9f0c> >>>