token --- 与 Python 解析树一同使用的常量¶
源代码: Lib/token.py
此模块提供表示解析树叶节点(终端符号)的数值的常量。请参阅 Python 发行版中的 Grammar/Tokens 文件,了解这些名称在语言语法上下文中的定义。名称所映射的特定数值在不同 Python 版本之间可能会发生改变。
该模块还提供了一个从数字代码到名称的映射以及一些函数。这些函数反映了 Python C 头文件中的定义。
请注意,一个 token 的值可能取决于分词器选项。例如,一个 "+" token 可能会被报告为 PLUS 或 OP,一个 "match" token 可能会被报告为 NAME 或 SOFT_KEYWORD。
- token.tok_name¶
- 将此模块中定义的常量的数值映射回名称字符串的字典,从而可以生成更易于人类阅读的解析树表示。 
- token.ISTERMINAL(x)¶
- 对于终端符号值,返回 - True。
- token.ISNONTERMINAL(x)¶
- 对于非终端符号值,返回 - True。
- token.ISEOF(x)¶
- 如果 x 是表示输入结束的标记,则返回 - True。
token 常量有:
- token.STRING¶
- 指示字符串或字节串字面值的 token 值,不包括格式化字符串字面值。该 token 字符串不会被解释:它包含周围的引号和前缀(如果给定);反斜杠按原样包含,不处理转义序列。 
- token.OP¶
- 
CPython 实现细节: 此值仅由 tokenize模块报告。在内部,分词器使用确切的 token 类型。
- token.COMMENT¶
- 用于指示注释的 token 值。解析器会忽略 - COMMENTtoken。
- token.NL¶
- 用于指示非终止换行的 token 值。当一个逻辑代码行跨越多个物理行时,会生成 - NLtoken。解析器会忽略- NLtoken。
- token.FSTRING_START¶
- 用于指示f-string 字面值开始的 token 值。 - CPython 实现细节: token 字符串包括前缀和起始引号,但不包括字面值的任何内容。 
- token.FSTRING_MIDDLE¶
- 用于f-string 字面值内部的字面文本的 token 值,包括格式说明。 - CPython 实现细节: 替换字段(即 f-string 的非字面值部分)使用与其他表达式相同的 token,并由 - LBRACE、- RBRACE、- EXCLAMATION和- COLONtoken 分隔。
- token.TSTRING_START¶
- 用于指示模板字符串字面值开始的 token 值。 - CPython 实现细节: token 字符串包括前缀和起始引号,但不包括字面值的任何内容。 - 在 3.14 版本加入。 
- token.TSTRING_MIDDLE¶
- 用于模板字符串字面值内部的字面文本的 token 值,包括格式说明。 - CPython 实现细节: 替换字段(即 t-string 的非字面值部分)使用与其他表达式相同的 token,并由 - LBRACE、- RBRACE、- EXCLAMATION和- COLONtoken 分隔。- 在 3.14 版本加入。 
- token.TSTRING_END¶
- 用于指示模板字符串字面值结束的 token 值。 - CPython 实现细节: token 字符串包含结束引号。 - 在 3.14 版本加入。 
- token.ENCODING¶
- 指示用于将源字节解码为文本的编码的 token 值。 - tokenize.tokenize()返回的第一个 token 始终是- ENCODINGtoken。- CPython 实现细节: C 分词器不使用此 token 类型,但 - tokenize模块需要它。
以下 token 类型不由 tokenize 模块生成,它们是在分词器或解析器中为特殊用途定义的
- token.TYPE_IGNORE¶
- 指示识别到 - type: ignore注释的 token 值。此类 token 仅在设置了- PyCF_TYPE_COMMENTS标志时才会生成,以代替常规的- COMMENTtoken。
- token.TYPE_COMMENT¶
- 指示识别到类型注释的 token 值。此类 token 仅在设置了 - PyCF_TYPE_COMMENTS标志时才会生成,以代替常规的- COMMENTtoken。
- token.SOFT_KEYWORD¶
- 指示软关键字的 token 值。 - 分词器从不生成此值。要检查软关键字,请将 - NAMEtoken 的字符串传递给- keyword.issoftkeyword()。
- token.ERRORTOKEN¶
- 用于指示错误输入的 token 值。 - tokenize模块通常通过引发异常来指示错误,而不是发出此 token。它也可能发出- OP或- NAME等 token,其字符串稍后会被解析器拒绝。
其余的 token 代表特定的运算符和分隔符。(tokenize 模块将这些报告为 OP;有关详细信息,请参阅 tokenize 文档中的 exact_type。)
| Token | 值 | 
|---|---|
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
提供了以下非 token 常量
- token.N_TOKENS¶
- 此模块中定义的 token 类型数量。 
- token.EXACT_TOKEN_TYPES¶
- 一个将 token 的字符串表示映射到其数字代码的字典。 - 在 3.8 版本加入。 
在 3.5 版本发生变更: 添加了 AWAIT 和 ASYNC token。
在 3.7 版本发生变更: 移除了 AWAIT 和 ASYNC token。“async” 和 “await” 现在被标记为 NAME token。
在 3.8 版本发生变更: 添加了 TYPE_COMMENT、TYPE_IGNORE、COLONEQUAL。重新添加了 AWAIT 和 ASYNC token(为了支持使用 feature_version 设置为 6 或更低版本的 ast.parse() 来解析旧版 Python,这些 token 是必需的)。
在 3.12 版本发生变更: 添加了 EXCLAMATION。
在 3.13 版本发生变更: 再次移除了 AWAIT 和 ASYNC token。