我试图使用python3中的ast module来解析一些Python代码。 现在我只编写一个简单的节点访问者,它将输出原始代码。在
我很难将AST的一些节点转换成实际的代码。在
关于http://docs.python.org/3.2/library/ast.html#abstract-grammar的语法,我不明白expr? returns
应该是什么
FunctionDef(identifier name, arguments args,
stmt* body, expr* decorator_list, expr? returns)
查看完整的Python语法(http://docs.python.org/3.2/reference/grammar.html)并不能帮助我理解可选元素可能是什么。在
同样,对于函数(或lambda函数)声明的参数:
^{pr2}$我可以确定:
arg* args
和expr* defaults
:“基本”参数及其默认值identifier? vararg
和expr? varargannotation
:用于捕获可变数量的参数(+注释),例如def f(first, *others : 'annotation'):
identifier? kwarg
和expr? kwargannotation
:命名参数也是一样的但我不知道什么是arg* kwonlyargs
和expr* kw_defaults
我正在寻找一些使用这三个特性的示例代码,以便我能够理解它们的含义/用途。在
谢谢。在
老问题,但仍然悬而未决。所以:
expr? returns
用于函数的返回类型提示。E、 g结果是一个
ast.Name
实例,其中id = 'str'
位于FunctionDef
对象的result
字段中。有关类型提示的更多信息,请参见documentation和PEP 484。arg* kwonlyargs
是keyword-only arguments,即出现在varargs之后的关键字参数。(这背后的原因是,您可能希望定义一个同时接受可变数量参数和可选关键字参数的函数。出现在varargs之前的kwarg不能是可选的,因为在附加vararg之前,必须在调用站点上显式指定所有这些参数。)expr* kw_defaults
是每个kwonlyarg的默认值列表。如果一个kwonlyarg没有默认值,它在列表中用None
表示。在相关问题 更多 >
编程相关推荐