expr* 和 expr 之间有什么区别?和 expr in Python3.6 AST 抽象语法?

What's difference between expr*, expr? and expr in Python3.6 AST Abstract Grammar?

Python3.6 AST Abstract Grammar中,里面有expr*expr?expr。它们之间有什么区别?如:expr* targetsexpr? valueexpr target.

这些后缀通常与正则表达式中的含义相同:

  • expr - 恰好是表达式
  • 的一个实例
  • expr?- 零个或一个实例
  • expr* - 零个或多个实例

例如,对于以下内容:

FunctionDef(identifier name, arguments args,
            stmt* body, expr* decorator_list, expr? returns)

一个函数定义仅包含一个名称、至少零个语句和一个可选的 return 值(对于不 return 任何东西的函数)。