> **Источник:** https://python-all.ru/3.14/library/token.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `token` – Константы для работы с деревьями разбора Python

**Исходный код:** [Lib/token.py](https://python-all.ru/src/3.14/Lib/token.py)

---

Этот модуль предоставляет константы, представляющие числовые значения листовых узлов\\nдерева разбора (терминальных токенов). Файл `Grammar/Tokens`\\nв дистрибутиве Python содержит определения имён в контексте грамматики языка.\\nКонкретные числовые значения, на которые ссылаются имена, могут изменяться между версиями Python.

Модуль также предоставляет отображение числовых кодов на имена и несколько\\nфункций. Функции дублируют определения из C-заголовочных файлов Python.

Следует учесть, что значение токена может зависеть от параметров токенизатора. Например, токен\\n`"+"` может быть представлен как [`PLUS`](https://python-all.ru/3.14/library/token.html#token.PLUS) или [`OP`](https://python-all.ru/3.14/library/token.html#token.OP), или\\nтокен `"match"` может быть либо [`NAME`](https://python-all.ru/3.14/library/token.html#token.NAME), либо [`SOFT_KEYWORD`](https://python-all.ru/3.14/library/token.html#token.SOFT_KEYWORD).

#### `token.tok_name`

Словарь, отображающий числовые значения констант, определённых в этом модуле,\\nобратно в строки имён, что позволяет создавать более удобочитаемое представление деревьев разбора.

#### `token.ISTERMINAL(x)`

Возвращает `True` для значений терминальных токенов.

#### `token.ISNONTERMINAL(x)`

Возвращает `True` для значений нетерминальных токенов.

#### `token.ISEOF(x)`

Возвращает `True`, если *x* – это маркер конца входных данных.

Константы токенов:

#### `token.NAME`

Значение токена, указывающее на [идентификатор или ключевое слово](https://python-all.ru/3.14/reference/lexical_analysis.html#identifiers).

#### `token.NUMBER`

Значение токена, указывающее на [числовой литерал](https://python-all.ru/3.14/reference/lexical_analysis.html#numbers)

#### `token.STRING`

Значение токена, указывающее на [строковый или байтовый литерал](https://python-all.ru/3.14/reference/lexical_analysis.html#strings),\\nза исключением [formatted string literals](https://python-all.ru/3.14/reference/lexical_analysis.html#f-strings).\\nСтрока токена не интерпретируется:\\nона включает окружающие кавычки и префикс (если указан);\\nобратная косая черта включается буквально, без обработки escape-последовательностей.

#### `token.OP`

Общее значение токена, указывающее на\\n[оператор](https://python-all.ru/3.14/reference/lexical_analysis.html#operators) или [разделитель](https://python-all.ru/3.14/reference/lexical_analysis.html#delimiters).

**Особенность реализации CPython:** Это значение сообщается только модулем [`tokenize`](https://python-all.ru/3.14/library/tokenize.html#module-tokenize).\\nВнутренне токенизатор использует\\n[точные типы токенов](https://python-all.ru/3.14/library/token.html#token-operators-delimiters).

#### `token.COMMENT`

Значение токена, используемое для обозначения комментария.\\nПарсер игнорирует токены `COMMENT`.

#### `token.NEWLINE`

Значение токена, указывающее на конец [логической строки](https://python-all.ru/3.14/reference/lexical_analysis.html#logical-lines).

#### `token.NL`

Значение токена, используемое для обозначения незавершающего символа новой строки.\\nТокены `NL` генерируются, когда логическая строка кода продолжается\\nна нескольких физических строках. Парсер игнорирует токены `NL`.

#### `token.INDENT`

Значение токена, используемое в начале [логической строки](https://python-all.ru/3.14/reference/lexical_analysis.html#logical-lines)\\nдля обозначения начала [вложенного блока](https://python-all.ru/3.14/reference/lexical_analysis.html#indentation).

#### `token.DEDENT`

Значение токена, используемое в начале [логической строки](https://python-all.ru/3.14/reference/lexical_analysis.html#logical-lines) чтобы указать конец [блока с отступом](https://python-all.ru/3.14/reference/lexical_analysis.html#indentation).

#### `token.FSTRING_START`

Токен, обозначающий начало [f-строкового литерала](https://python-all.ru/3.14/reference/lexical_analysis.html#f-strings).

**Деталь реализации CPython:** Строка токена включает префикс и открывающую кавычку (кавычки), но ни одного из содержимого литерала.

#### `token.FSTRING_MIDDLE`

Токен, используемый для литерального текста внутри [f-строкового литерала](https://python-all.ru/3.14/reference/lexical_analysis.html#f-strings), включая спецификации формата.

**Деталь реализации CPython:** Поля подстановки (то есть нелитеральные части f-строк) используют tе же токены, что и другие выражения, и разделяются [`LBRACE`](https://python-all.ru/3.14/library/token.html#token.LBRACE), [`RBRACE`](https://python-all.ru/3.14/library/token.html#token.RBRACE), [`EXCLAMATION`](https://python-all.ru/3.14/library/token.html#token.EXCLAMATION) и [`COLON`](https://python-all.ru/3.14/library/token.html#token.COLON) токенами.

#### `token.FSTRING_END`

Токен, обозначающий конец [f-строки](https://python-all.ru/3.14/reference/lexical_analysis.html#f-strings).

**Деталь реализации CPython:** Строка токена содержит закрывающую кавычку (кавычки).

#### `token.TSTRING_START`

Токен, обозначающий начало литерала шаблонной строки.

**Деталь реализации CPython:** Строка токена включает префикс и открывающую кавычку (кавычки), но ни одного из содержимого литерала.

Добавлено в версии 3.14.

#### `token.TSTRING_MIDDLE`

Токен, используемый для литерального текста внутри литерала шаблонной строки, включая спецификации формата.

**Деталь реализации CPython:** Поля подстановки (то есть нелитеральные части t-строк) используют tе же токены, что и другие выражения, и разделяются [`LBRACE`](https://python-all.ru/3.14/library/token.html#token.LBRACE), [`RBRACE`](https://python-all.ru/3.14/library/token.html#token.RBRACE), [`EXCLAMATION`](https://python-all.ru/3.14/library/token.html#token.EXCLAMATION) и [`COLON`](https://python-all.ru/3.14/library/token.html#token.COLON) токенами.

Добавлено в версии 3.14.

#### `token.TSTRING_END`

Токен, обозначающий конец литерала шаблонной строки.

**Деталь реализации CPython:** Строка токена содержит закрывающую кавычку (кавычки).

Добавлено в версии 3.14.

#### `token.ENDMARKER`

Токен, обозначающий конец ввода. Используется в [правилах грамматики верхнего уровня](https://python-all.ru/3.14/reference/toplevel_components.html#top-level).

#### `token.ENCODING`

Токен, обозначающий кодировку, используемую для декодирования исходных байтов в текст. Первый токен, возвращаемый [`tokenize.tokenize()`](https://python-all.ru/3.14/library/tokenize.html#tokenize.tokenize), всегда будет токеном `ENCODING`.

**Деталь реализации CPython:** Этот тип токена не используется C-токенизатором, но необходим для модуля [`tokenize`](https://python-all.ru/3.14/library/tokenize.html#module-tokenize).

Следующие типы токенов не производятся модулем [`tokenize`](https://python-all.ru/3.14/library/tokenize.html#module-tokenize) и определены для специальных целей в токенизаторе или синтаксическом анализаторе:

#### `token.TYPE_IGNORE`

Токен, указывающий, что распознан комментарий `type: ignore`. Такие токены производятся вместо обычных токенов [`COMMENT`](https://python-all.ru/3.14/library/token.html#token.COMMENT) только с флагом [`PyCF_TYPE_COMMENTS`](https://python-all.ru/3.14/library/ast.html#ast.PyCF_TYPE_COMMENTS).

#### `token.TYPE_COMMENT`

Токен, указывающий, что распознан комментарий типа. Такие токены производятся вместо обычных токенов [`COMMENT`](https://python-all.ru/3.14/library/token.html#token.COMMENT) только с флагом [`PyCF_TYPE_COMMENTS`](https://python-all.ru/3.14/library/ast.html#ast.PyCF_TYPE_COMMENTS).

#### `token.SOFT_KEYWORD`

Токен, обозначающий [мягкое ключевое слово](https://python-all.ru/3.14/reference/lexical_analysis.html#soft-keywords).

Токенизатор никогда не производит это значение. Чтобы проверить мягкое ключевое слово, передайте строку токена [`NAME`](https://python-all.ru/3.14/library/token.html#token.NAME) в [`keyword.issoftkeyword()`](https://python-all.ru/3.14/library/keyword.html#keyword.issoftkeyword).

#### `token.ERRORTOKEN`

Значение токена, используемое для указания неверного ввода.

Модуль [`tokenize`](https://python-all.ru/3.14/library/tokenize.html#module-tokenize) обычно указывает на ошибки с помощью возбуждения исключений, а не выдачи этого токена. Он также может выдавать такие токены, как [`OP`](https://python-all.ru/3.14/library/token.html#token.OP) или [`NAME`](https://python-all.ru/3.14/library/token.html#token.NAME), со строками, которые впоследствии отвергаются парсером.

Оставшиеся токены представляют конкретные [операторы](https://python-all.ru/3.14/reference/lexical_analysis.html#operators) и [разделители](https://python-all.ru/3.14/reference/lexical_analysis.html#delimiters). (Модуль [`tokenize`](https://python-all.ru/3.14/library/tokenize.html#module-tokenize) сообщает о них как о [`OP`](https://python-all.ru/3.14/library/token.html#token.OP); см. `exact_type` в документации `tokenize` для подробностей.)

| Токен | Значение |
| --- | --- |
| token.LPAR | `"("` |
| token.RPAR | `")"` |
| token.LSQB | `"["` |
| token.RSQB | `"]"` |
| token.COLON | `":"` |
| token.COMMA | `","` |
| token.SEMI | `";"` |
| token.PLUS | `"+"` |
| token.MINUS | `"-"` |
| token.STAR | `"*"` |
| token.SLASH | `"/"` |
| token.VBAR | `"\|"` |
| token.AMPER | `"&"` |
| token.LESS | `"<"` |
| token.GREATER | `">"` |
| token.EQUAL | `"="` |
| token.DOT | `"."` |
| token.PERCENT | `"%"` |
| token.LBRACE | `"{"` |
| token.RBRACE | `"}"` |
| token.EQEQUAL | `"=="` |
| token.NOTEQUAL | `"!="` |
| token.LESSEQUAL | `"<="` |
| token.GREATEREQUAL | `">="` |
| token.TILDE | `"~"` |
| token.CIRCUMFLEX | `"^"` |
| token.LEFTSHIFT | `"<<"` |
| token.RIGHTSHIFT | `">>"` |
| token.DOUBLESTAR | `"**"` |
| token.PLUSEQUAL | `"+="` |
| token.MINEQUAL | `"-="` |
| token.STAREQUAL | `"*="` |
| token.SLASHEQUAL | `"/="` |
| token.PERCENTEQUAL | `"%="` |
| token.AMPEREQUAL | `"&="` |
| token.VBAREQUAL | `"\|="` |
| token.CIRCUMFLEXEQUAL | `"^="` |
| token.LEFTSHIFTEQUAL | `"<<="` |
| token.RIGHTSHIFTEQUAL | `">>="` |
| token.DOUBLESTAREQUAL | `"**="` |
| token.DOUBLESLASH | `"//"` |
| token.DOUBLESLASHEQUAL | `"//="` |
| token.AT | `"@"` |
| token.ATEQUAL | `"@="` |
| token.RARROW | `"->"` |
| token.ELLIPSIS | `"..."` |
| token.COLONEQUAL | `":="` |
| token.EXCLAMATION | `"!"` |

Предоставляются следующие константы, не являющиеся токенами:

#### `token.N_TOKENS`

Количество типов токенов, определённых в этом модуле.

#### `token.EXACT_TOKEN_TYPES`

Словарь, сопоставляющий строковое представление токена с его числовым кодом.

Добавлено в версии 3.8.

Изменено в версии 3.5: Добавлены токены `AWAIT` и `ASYNC`.

Изменено в версии 3.7: Добавлены токены [`COMMENT`](https://python-all.ru/3.14/library/token.html#token.COMMENT), [`NL`](https://python-all.ru/3.14/library/token.html#token.NL) и [`ENCODING`](https://python-all.ru/3.14/library/token.html#token.ENCODING).

Изменено в версии 3.7: Удалены токены `AWAIT` и `ASYNC`. «async» и «await» теперь токенизируются как токены [`NAME`](https://python-all.ru/3.14/library/token.html#token.NAME).

Изменено в версии 3.8: Добавлены токены [`TYPE_COMMENT`](https://python-all.ru/3.14/library/token.html#token.TYPE_COMMENT), [`TYPE_IGNORE`](https://python-all.ru/3.14/library/token.html#token.TYPE_IGNORE), [`COLONEQUAL`](https://python-all.ru/3.14/library/token.html#token.COLONEQUAL). Добавлены обратно токены `AWAIT` и `ASYNC` (они необходимы для поддержки разбора старых версий Python для [`ast.parse()`](https://python-all.ru/3.14/library/ast.html#ast.parse) с `feature_version`, установленным в 6 или ниже).

Изменено в версии 3.12: Добавлен [`EXCLAMATION`](https://python-all.ru/3.14/library/token.html#token.EXCLAMATION).

Изменено в версии 3.13: Снова удалены токены `AWAIT` и `ASYNC`.
