Python 3 でast モジュールを使用して、 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 ) を見ても、オプションの要素が何であるかを理解するのに役立ちませんでした。
同様に、関数 (またはラムダ関数) 宣言の引数について:
arguments = (arg* args, identifier? vararg, expr? varargannotation,
arg* kwonlyargs, identifier? kwarg,
expr? kwargannotation, expr* defaults,
expr* kw_defaults)
私は識別できます:
arg* args
andexpr* defaults
: 「基本」引数とそのデフォルト値identifier? vararg
andexpr? varargannotation
: 次のように、可変数の引数 (+ 注釈) のキャプチャに使用されます。def f(first, *others : 'annotation'):
identifier? kwarg
andexpr? kwargannotation
: 名前付きパラメーターについても同じ
arg* kwonlyargs
しかし、私は何が何であるかを理解することはできませんexpr* kw_defaults
これらの 3 つの機能を使用するサンプル コードを探しているので、それらの意味/使用法を理解できます。
ありがとう。