token.md
1> **Источник:** https://python-all.ru/3.13/library/token.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `token` – Константы для работы с деревьями разбора Python89**Исходный код:** [Lib/token.py](https://python-all.ru/src/3.13/Lib/token.py)1011---1213Этот модуль предоставляет константы, представляющие числовые значения листовых узлов\\nдерева разбора (терминальных токенов). Файл `Grammar/Tokens`\\nв дистрибутиве Python содержит определения имён в контексте грамматики языка.\\nКонкретные числовые значения, на которые ссылаются имена, могут изменяться между версиями Python.1415Модуль также предоставляет отображение числовых кодов на имена и несколько\\nфункций. Функции дублируют определения из C-заголовочных файлов Python.1617Следует учесть, что значение токена может зависеть от параметров токенизатора. Например, токен\\n`"+"` может быть представлен как [`PLUS`](https://python-all.ru/3.13/library/token.html#token.PLUS) или [`OP`](https://python-all.ru/3.13/library/token.html#token.OP), или\\nтокен `"match"` может быть либо [`NAME`](https://python-all.ru/3.13/library/token.html#token.NAME), либо [`SOFT_KEYWORD`](https://python-all.ru/3.13/library/token.html#token.SOFT_KEYWORD).1819#### `token.tok_name`2021Словарь, отображающий числовые значения констант, определённых в этом модуле,\\nобратно в строки имён, что позволяет создавать более удобочитаемое представление деревьев разбора.2223#### `token.ISTERMINAL(x)`2425Возвращает `True` для значений терминальных токенов.2627#### `token.ISNONTERMINAL(x)`2829Возвращает `True` для значений нетерминальных токенов.3031#### `token.ISEOF(x)`3233Возвращает `True`, если *x* – это маркер конца входных данных.3435Константы токенов:3637#### `token.NAME`3839Значение токена, указывающее на [идентификатор](https://python-all.ru/3.13/reference/lexical_analysis.html#identifiers). Ключевые слова также изначально разбиваются на токены `NAME`.4041#### `token.NUMBER`4243Значение токена, указывающее на [числовой литерал](https://python-all.ru/3.13/reference/lexical_analysis.html#numbers)4445#### `token.STRING`4647Значение токена, указывающее на [строковый или байтовый литерал](https://python-all.ru/3.13/reference/lexical_analysis.html#strings),\\nза исключением [formatted string literals](https://python-all.ru/3.13/reference/lexical_analysis.html#f-strings).\\nСтрока токена не интерпретируется:\\nона включает окружающие кавычки и префикс (если указан);\\nобратная косая черта включается буквально, без обработки escape-последовательностей.4849#### `token.OP`5051Общее значение токена, указывающее на\\n[оператор](https://python-all.ru/3.13/reference/lexical_analysis.html#operators) или [разделитель](https://python-all.ru/3.13/reference/lexical_analysis.html#delimiters).5253**Особенность реализации CPython:** Это значение сообщается только модулем [`tokenize`](https://python-all.ru/3.13/library/tokenize.html#module-tokenize).\\nВнутренне токенизатор использует\\n[точные типы токенов](https://python-all.ru/3.13/library/token.html#token-operators-delimiters).5455#### `token.COMMENT`5657Значение токена, используемое для обозначения комментария.\\nПарсер игнорирует токены `COMMENT`.5859#### `token.NEWLINE`6061Значение токена, указывающее на конец [логической строки](https://python-all.ru/3.13/reference/lexical_analysis.html#logical-lines).6263#### `token.NL`6465Значение токена, используемое для обозначения незавершающего символа новой строки.\\nТокены `NL` генерируются, когда логическая строка кода продолжается\\nна нескольких физических строках. Парсер игнорирует токены `NL`.6667#### `token.INDENT`6869Значение токена, используемое в начале [логической строки](https://python-all.ru/3.13/reference/lexical_analysis.html#logical-lines)\\nдля обозначения начала [вложенного блока](https://python-all.ru/3.13/reference/lexical_analysis.html#indentation).7071#### `token.DEDENT`7273Значение токена, используемое в начале [логической строки](https://python-all.ru/3.13/reference/lexical_analysis.html#logical-lines) чтобы указать конец [блока с отступом](https://python-all.ru/3.13/reference/lexical_analysis.html#indentation).7475#### `token.FSTRING_START`7677Токен, обозначающий начало [f-строкового литерала](https://python-all.ru/3.13/reference/lexical_analysis.html#f-strings).7879**Деталь реализации CPython:** Строка токена включает префикс и открывающую кавычку (кавычки), но ни одного из содержимого литерала.8081#### `token.FSTRING_MIDDLE`8283Токен, используемый для литерального текста внутри [f-строкового литерала](https://python-all.ru/3.13/reference/lexical_analysis.html#f-strings), включая спецификации формата.8485**Деталь реализации CPython:** Поля подстановки (то есть нелитеральные части f-строк) используют tе же токены, что и другие выражения, и разделяются [`LBRACE`](https://python-all.ru/3.13/library/token.html#token.LBRACE), [`RBRACE`](https://python-all.ru/3.13/library/token.html#token.RBRACE), [`EXCLAMATION`](https://python-all.ru/3.13/library/token.html#token.EXCLAMATION) и [`COLON`](https://python-all.ru/3.13/library/token.html#token.COLON) токенами.8687#### `token.FSTRING_END`8889Токен, обозначающий конец [f-строки](https://python-all.ru/3.13/reference/lexical_analysis.html#f-strings).9091**Деталь реализации CPython:** Строка токена содержит закрывающую кавычку (кавычки).9293#### `token.ENDMARKER`9495Значение токена, обозначающее конец входных данных.9697#### `token.ENCODING`9899Токен, обозначающий кодировку, используемую для декодирования исходных байтов в текст. Первый токен, возвращаемый [`tokenize.tokenize()`](https://python-all.ru/3.13/library/tokenize.html#tokenize.tokenize), всегда будет токеном `ENCODING`.100101**Деталь реализации CPython:** Этот тип токена не используется C-токенизатором, но необходим для модуля [`tokenize`](https://python-all.ru/3.13/library/tokenize.html#module-tokenize).102103Следующие типы токенов не производятся модулем [`tokenize`](https://python-all.ru/3.13/library/tokenize.html#module-tokenize) и определены для специальных целей в токенизаторе или синтаксическом анализаторе:104105#### `token.TYPE_IGNORE`106107Токен, указывающий, что распознан комментарий `type: ignore`. Такие токены производятся вместо обычных токенов [`COMMENT`](https://python-all.ru/3.13/library/token.html#token.COMMENT) только с флагом [`PyCF_TYPE_COMMENTS`](https://python-all.ru/3.13/library/ast.html#ast.PyCF_TYPE_COMMENTS).108109#### `token.TYPE_COMMENT`110111Токен, указывающий, что распознан комментарий типа. Такие токены производятся вместо обычных токенов [`COMMENT`](https://python-all.ru/3.13/library/token.html#token.COMMENT) только с флагом [`PyCF_TYPE_COMMENTS`](https://python-all.ru/3.13/library/ast.html#ast.PyCF_TYPE_COMMENTS).112113#### `token.SOFT_KEYWORD`114115Токен, обозначающий [мягкое ключевое слово](https://python-all.ru/3.13/reference/lexical_analysis.html#soft-keywords).116117Токенизатор никогда не производит это значение. Чтобы проверить мягкое ключевое слово, передайте строку токена [`NAME`](https://python-all.ru/3.13/library/token.html#token.NAME) в [`keyword.issoftkeyword()`](https://python-all.ru/3.13/library/keyword.html#keyword.issoftkeyword).118119#### `token.ERRORTOKEN`120121Значение токена, используемое для указания неверного ввода.122123Модуль [`tokenize`](https://python-all.ru/3.13/library/tokenize.html#module-tokenize) обычно указывает на ошибки с помощью возбуждения исключений, а не выдачи этого токена. Он также может выдавать такие токены, как [`OP`](https://python-all.ru/3.13/library/token.html#token.OP) или [`NAME`](https://python-all.ru/3.13/library/token.html#token.NAME), со строками, которые впоследствии отвергаются парсером.124125Оставшиеся токены представляют конкретные [операторы](https://python-all.ru/3.13/reference/lexical_analysis.html#operators) и [разделители](https://python-all.ru/3.13/reference/lexical_analysis.html#delimiters). (Модуль [`tokenize`](https://python-all.ru/3.13/library/tokenize.html#module-tokenize) сообщает о них как о [`OP`](https://python-all.ru/3.13/library/token.html#token.OP); см. `exact_type` в документации `tokenize` для подробностей.)126127| Токен | Значение |128| --- | --- |129| token.LPAR | `"("` |130| token.RPAR | `")"` |131| token.LSQB | `"["` |132| token.RSQB | `"]"` |133| token.COLON | `":"` |134| token.COMMA | `","` |135| token.SEMI | `";"` |136| token.PLUS | `"+"` |137| token.MINUS | `"-"` |138| token.STAR | `"*"` |139| token.SLASH | `"/"` |140| token.VBAR | `"\|"` |141| token.AMPER | `"&"` |142| token.LESS | `"<"` |143| token.GREATER | `">"` |144| token.EQUAL | `"="` |145| token.DOT | `"."` |146| token.PERCENT | `"%"` |147| token.LBRACE | `"{"` |148| token.RBRACE | `"}"` |149| token.EQEQUAL | `"=="` |150| token.NOTEQUAL | `"!="` |151| token.LESSEQUAL | `"<="` |152| token.GREATEREQUAL | `">="` |153| token.TILDE | `"~"` |154| token.CIRCUMFLEX | `"^"` |155| token.LEFTSHIFT | `"<<"` |156| token.RIGHTSHIFT | `">>"` |157| token.DOUBLESTAR | `"**"` |158| token.PLUSEQUAL | `"+="` |159| token.MINEQUAL | `"-="` |160| token.STAREQUAL | `"*="` |161| token.SLASHEQUAL | `"/="` |162| token.PERCENTEQUAL | `"%="` |163| token.AMPEREQUAL | `"&="` |164| token.VBAREQUAL | `"\|="` |165| token.CIRCUMFLEXEQUAL | `"^="` |166| token.LEFTSHIFTEQUAL | `"<<="` |167| token.RIGHTSHIFTEQUAL | `">>="` |168| token.DOUBLESTAREQUAL | `"**="` |169| token.DOUBLESLASH | `"//"` |170| token.DOUBLESLASHEQUAL | `"//="` |171| token.AT | `"@"` |172| token.ATEQUAL | `"@="` |173| token.RARROW | `"->"` |174| token.ELLIPSIS | `"..."` |175| token.COLONEQUAL | `":="` |176| token.EXCLAMATION | `"!"` |177178Предоставляются следующие константы, не являющиеся токенами:179180#### `token.N_TOKENS`181182Количество типов токенов, определённых в этом модуле.183184#### `token.EXACT_TOKEN_TYPES`185186Словарь, сопоставляющий строковое представление токена с его числовым кодом.187188Добавлено в версии 3.8.189190Изменено в версии 3.5: Добавлены токены `AWAIT` и `ASYNC`.191192Изменено в версии 3.7: Добавлены токены [`COMMENT`](https://python-all.ru/3.13/library/token.html#token.COMMENT), [`NL`](https://python-all.ru/3.13/library/token.html#token.NL) и [`ENCODING`](https://python-all.ru/3.13/library/token.html#token.ENCODING).193194Изменено в версии 3.7: Удалены токены `AWAIT` и `ASYNC`. «async» и «await» теперь токенизируются как токены [`NAME`](https://python-all.ru/3.13/library/token.html#token.NAME).195196Изменено в версии 3.8: Добавлены токены [`TYPE_COMMENT`](https://python-all.ru/3.13/library/token.html#token.TYPE_COMMENT), [`TYPE_IGNORE`](https://python-all.ru/3.13/library/token.html#token.TYPE_IGNORE), [`COLONEQUAL`](https://python-all.ru/3.13/library/token.html#token.COLONEQUAL). Добавлены обратно токены `AWAIT` и `ASYNC` (они необходимы для поддержки разбора старых версий Python для [`ast.parse()`](https://python-all.ru/3.13/library/ast.html#ast.parse) с `feature_version`, установленным в 6 или ниже).197198Изменено в версии 3.12: Добавлен [`EXCLAMATION`](https://python-all.ru/3.13/library/token.html#token.EXCLAMATION).199200Изменено в версии 3.13: Снова удалены токены `AWAIT` и `ASYNC`.201