编程语言
首页 > 编程语言> > Python AST中的ExtSlice节点表示什么语法?

Python AST中的ExtSlice节点表示什么语法?

作者:互联网

我正在遍历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是哪种表示法?

解决方法:

扩展切片是具有多个部分的切片,它使用某些特定于切片的功能.

特定于切片的功能类似于…(文字省略号)或::(测试分隔符).

因此,一个示例涉及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>
>>> 

标签:abstract-syntax-tree,internals,python
来源: https://codeday.me/bug/20191101/1987518.html