我正在浏览Python的ast
模块,无法找出切片定义:
slice = Ellipsis | Slice(expr? lower, expr? upper, expr? step)
| ExtSlice(slice* dims)
| Index(expr value)
到目前为止,我知道Ellipsis
是[...]
,Slice
是通常的[start:end:step]
符号,Index
是[index]
,但是符号是ExtSlice
?
答案 0 :(得分:4)
扩展切片是具有多个部分的切片,使用某些切片特定的特征。
切片特定功能类似于...
(文字省略号)或:
(测试分隔符)。
因此,ExtSlice
或o[...:None]
等表达式涉及o[1,2:3]
的示例。
以下是一些证明这一点的例子:
>>> compile('o[x]', '<string>', 'exec', PyCF_ONLY_AST).body[0].value.slice
<_ast.Index object at 0xb72a9e6c>
>>> compile('o[x,y]', '<string>', 'exec', PyCF_ONLY_AST).body[0].value.slice
<_ast.Index object at 0xb72a9dac>
>>> compile('o[x:y]', '<string>', 'exec', PyCF_ONLY_AST).body[0].value.slice
<_ast.Slice object at 0xb72a9dcc>
>>> compile('o[x:y,z]', '<string>', 'exec', PyCF_ONLY_AST).body[0].value.slice
<_ast.ExtSlice object at 0xb72a9f0c>
>>>