我在python AST中找到了一个新的作业
AnnAssign(expr target, expr annotation, expr? value, int simple)
任何人都可以用python3给我一个AssAssign的例子。 提前致谢
答案 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'