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 值。解析器會忽略
COMMENT
token。
- token.NL¶
用於指示非終止換行的 token 值。當一個邏輯程式碼行跨越多個物理行時,會生成
NL
token。解析器會忽略NL
token。
- token.FSTRING_START¶
用於指示f-string 字面值開始的 token 值。
CPython 實現細節: token 字串包括字首和起始引號,但不包括字面值的任何內容。
- token.FSTRING_MIDDLE¶
用於f-string 字面值內部的字面文字的 token 值,包括格式說明。
CPython 實現細節: 替換欄位(即 f-string 的非字面值部分)使用與其他表示式相同的 token,並由
LBRACE
、RBRACE
、EXCLAMATION
和COLON
token 分隔。
- token.TSTRING_START¶
用於指示模板字串字面值開始的 token 值。
CPython 實現細節: token 字串包括字首和起始引號,但不包括字面值的任何內容。
在 3.14 版本加入。
- token.TSTRING_MIDDLE¶
用於模板字串字面值內部的字面文字的 token 值,包括格式說明。
CPython 實現細節: 替換欄位(即 t-string 的非字面值部分)使用與其他表示式相同的 token,並由
LBRACE
、RBRACE
、EXCLAMATION
和COLON
token 分隔。在 3.14 版本加入。
- token.TSTRING_END¶
用於指示模板字串字面值結束的 token 值。
CPython 實現細節: token 字串包含結束引號。
在 3.14 版本加入。
- token.ENCODING¶
指示用於將源位元組解碼為文字的編碼的 token 值。
tokenize.tokenize()
返回的第一個 token 始終是ENCODING
token。CPython 實現細節: C 分詞器不使用此 token 型別,但
tokenize
模組需要它。
以下 token 型別不由 tokenize
模組生成,它們是在分詞器或解析器中為特殊用途定義的
- token.TYPE_IGNORE¶
指示識別到
type: ignore
註釋的 token 值。此類 token 僅在設定了PyCF_TYPE_COMMENTS
標誌時才會生成,以代替常規的COMMENT
token。
- token.TYPE_COMMENT¶
指示識別到型別註釋的 token 值。此類 token 僅在設定了
PyCF_TYPE_COMMENTS
標誌時才會生成,以代替常規的COMMENT
token。
- token.SOFT_KEYWORD¶
指示軟關鍵字的 token 值。
分詞器從不生成此值。要檢查軟關鍵字,請將
NAME
token 的字串傳遞給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。