4

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* argsand expr* defaults: 「基本」引数とそのデフォルト値
  • identifier? varargand expr? varargannotation: 次のように、可変数の引数 (+ 注釈) のキャプチャに使用されます。def f(first, *others : 'annotation'):
  • identifier? kwargand expr? kwargannotation: 名前付きパラメーターについても同じ

arg* kwonlyargsしかし、私は何が何であるかを理解することはできませんexpr* kw_defaults

これらの 3 つの機能を使用するサンプル コードを探しているので、それらの意味/使用法を理解できます。

ありがとう。

4

1 に答える 1