在python3中的Ann赋值

时间:2017-08-08 07:36:33

标签: python python-3.x

我在python AST中找到了一个新的作业

AnnAssign(expr target, expr annotation, expr? value, int simple)

任何人都可以用python3给我一个AssAssign的例子。 提前致谢

1 个答案:

答案 0 :(得分:3)

AnnAssign带注释的作业,它引用了PEP 526引入的变量注释。这允许将类型注释(用于type hints)附加到正常变量。

带注释的赋值是变量注释与值赋值的组合。一个例子如下:

foo : int = 42

此处,foo是变量名称,int是类型注释。

我们可以使用ast模块验证这确实创建了一个AnnAssign节点并查看这些节点的外观:

>>> t = ast.parse('foo : int = 42')
>>> t.body[0]
<_ast.AnnAssign object at 0x0000025A80DF0860>

与正常分配类似,目标位于target属性中。请注意,带注释的赋值只有单个目标,因此元组赋值显式不起作用。该节点还具有值value的属性:

>>> t.body[0].target
<_ast.Name object at 0x0000025A80DF0828>
>>> t.body[0].target.id
'foo'
>>> t.body[0].value
<_ast.Num object at 0x0000025A80DF0CF8>
>>> t.body[0].value.n
42

可以使用annotation属性访问注释。注释是Python对象,因此在这种情况下,我们会看到另一个Name节点:

>>> t.body[0].annotation
<_ast.Name object at 0x0000025A80DF0898>
>>> t.body[0].annotation.id
'int'