Python ast col_offset for With节点

时间:2016-01-25 17:07:14

标签: python abstract-syntax-tree

ast.With节点在python2中具有奇怪的col_offset值 - 它提供了所包含表达式的偏移量而不是with语句偏移量。

是错误还是功能?在py2 / py3中是否还有更多节点具有相同的行为?

import ast


def node_offset(src):
    node = ast.parse(src).body[0]
    print(node.col_offset, node.__class__.__name__)


node_offset('print(1)')
node_offset('raise  fd')
node_offset('with  exp: return 1')

py2输出:

(0, 'Print')
(0, 'Raise')
(6, 'With') <- offset of the 'exp'

py3输出:

0 'Print'
0 'Raise'
0 'With' <- looks correct to me

0 个答案:

没有答案