token.md
1> **Источник:** https://python-all.ru/3/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.14/Lib/token.py)1011---1213Этот модуль предоставляет константы, представляющие числовые значения листовых узлов\\nдерева разбора (терминальных токенов). Файл `Grammar/Tokens`\\nв дистрибутиве Python содержит определения имён в контексте грамматики языка.\\nКонкретные числовые значения, на которые ссылаются имена, могут изменяться между версиями Python.1415Модуль также предоставляет отображение числовых кодов на имена и несколько\\nфункций. Функции дублируют определения из C-заголовочных файлов Python.1617Следует учесть, что значение токена может зависеть от параметров токенизатора. Например, токен\\n`"+"` может быть представлен как [`PLUS`](https://python-all.ru/3/library/token.html#token.PLUS) или [`OP`](https://python-all.ru/3/library/token.html#token.OP), или\\nтокен `"match"` может быть либо [`NAME`](https://python-all.ru/3/library/token.html#token.NAME), либо [`SOFT_KEYWORD`](https://python-all.ru/3/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/reference/lexical_analysis.html#identifiers).4041#### `token.NUMBER`4243Значение токена, указывающее на [числовой литерал](https://python-all.ru/3/reference/lexical_analysis.html#numbers)4445#### `token.STRING`4647Значение токена, указывающее на [строковый или байтовый литерал](https://python-all.ru/3/reference/lexical_analysis.html#strings),\\nза исключением [formatted string literals](https://python-all.ru/3/reference/lexical_analysis.html#f-strings).\\nСтрока токена не интерпретируется:\\nона включает окружающие кавычки и префикс (если указан);\\nобратная косая черта включается буквально, без обработки escape-последовательностей.4849#### `token.OP`5051Общее значение токена, указывающее на\\n[оператор](https://python-all.ru/3/reference/lexical_analysis.html#operators) или [разделитель](https://python-all.ru/3/reference/lexical_analysis.html#delimiters).5253**Особенность реализации CPython:** Это значение сообщается только модулем [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize).\\nВнутренне токенизатор использует\\n[точные типы токенов](https://python-all.ru/3/library/token.html#token-operators-delimiters).5455#### `token.COMMENT`5657Значение токена, используемое для обозначения комментария.\\nПарсер игнорирует токены `COMMENT`.5859#### `token.NEWLINE`6061Значение токена, указывающее на конец [логической строки](https://python-all.ru/3/reference/lexical_analysis.html#logical-lines).6263#### `token.NL`6465Значение токена, используемое для обозначения незавершающего символа новой строки.\\nТокены `NL` генерируются, когда логическая строка кода продолжается\\nна нескольких физических строках. Парсер игнорирует токены `NL`.6667#### `token.INDENT`6869Значение токена, используемое в начале [логической строки](https://python-all.ru/3/reference/lexical_analysis.html#logical-lines)\\nдля обозначения начала [вложенного блока](https://python-all.ru/3/reference/lexical_analysis.html#indentation).7071#### `token.DEDENT`7273Значение токена, используемое в начале [логической строки](https://python-all.ru/3/reference/lexical_analysis.html#logical-lines) чтобы указать конец [блока с отступом](https://python-all.ru/3/reference/lexical_analysis.html#indentation).7475#### `token.FSTRING_START`7677Токен, обозначающий начало [f-строкового литерала](https://python-all.ru/3/reference/lexical_analysis.html#f-strings).7879**Деталь реализации CPython:** Строка токена включает префикс и открывающую кавычку (кавычки), но ни одного из содержимого литерала.8081#### `token.FSTRING_MIDDLE`8283Токен, используемый для литерального текста внутри [f-строкового литерала](https://python-all.ru/3/reference/lexical_analysis.html#f-strings), включая спецификации формата.8485**Деталь реализации CPython:** Поля подстановки (то есть нелитеральные части f-строк) используют tе же токены, что и другие выражения, и разделяются [`LBRACE`](https://python-all.ru/3/library/token.html#token.LBRACE), [`RBRACE`](https://python-all.ru/3/library/token.html#token.RBRACE), [`EXCLAMATION`](https://python-all.ru/3/library/token.html#token.EXCLAMATION) и [`COLON`](https://python-all.ru/3/library/token.html#token.COLON) токенами.8687#### `token.FSTRING_END`8889Токен, обозначающий конец [f-строки](https://python-all.ru/3/reference/lexical_analysis.html#f-strings).9091**Деталь реализации CPython:** Строка токена содержит закрывающую кавычку (кавычки).9293#### `token.TSTRING_START`9495Токен, обозначающий начало литерала шаблонной строки.9697**Деталь реализации CPython:** Строка токена включает префикс и открывающую кавычку (кавычки), но ни одного из содержимого литерала.9899Добавлено в версии 3.14.100101#### `token.TSTRING_MIDDLE`102103Токен, используемый для литерального текста внутри литерала шаблонной строки, включая спецификации формата.104105**Деталь реализации CPython:** Поля подстановки (то есть нелитеральные части t-строк) используют tе же токены, что и другие выражения, и разделяются [`LBRACE`](https://python-all.ru/3/library/token.html#token.LBRACE), [`RBRACE`](https://python-all.ru/3/library/token.html#token.RBRACE), [`EXCLAMATION`](https://python-all.ru/3/library/token.html#token.EXCLAMATION) и [`COLON`](https://python-all.ru/3/library/token.html#token.COLON) токенами.106107Добавлено в версии 3.14.108109#### `token.TSTRING_END`110111Токен, обозначающий конец литерала шаблонной строки.112113**Деталь реализации CPython:** Строка токена содержит закрывающую кавычку (кавычки).114115Добавлено в версии 3.14.116117#### `token.ENDMARKER`118119Токен, обозначающий конец ввода. Используется в [правилах грамматики верхнего уровня](https://python-all.ru/3/reference/toplevel_components.html#top-level).120121#### `token.ENCODING`122123Токен, обозначающий кодировку, используемую для декодирования исходных байтов в текст. Первый токен, возвращаемый [`tokenize.tokenize()`](https://python-all.ru/3/library/tokenize.html#tokenize.tokenize), всегда будет токеном `ENCODING`.124125**Деталь реализации CPython:** Этот тип токена не используется C-токенизатором, но необходим для модуля [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize).126127Следующие типы токенов не производятся модулем [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize) и определены для специальных целей в токенизаторе или синтаксическом анализаторе:128129#### `token.TYPE_IGNORE`130131Токен, указывающий, что распознан комментарий `type: ignore`. Такие токены производятся вместо обычных токенов [`COMMENT`](https://python-all.ru/3/library/token.html#token.COMMENT) только с флагом [`PyCF_TYPE_COMMENTS`](https://python-all.ru/3/library/ast.html#ast.PyCF_TYPE_COMMENTS).132133#### `token.TYPE_COMMENT`134135Токен, указывающий, что распознан комментарий типа. Такие токены производятся вместо обычных токенов [`COMMENT`](https://python-all.ru/3/library/token.html#token.COMMENT) только с флагом [`PyCF_TYPE_COMMENTS`](https://python-all.ru/3/library/ast.html#ast.PyCF_TYPE_COMMENTS).136137#### `token.SOFT_KEYWORD`138139Токен, обозначающий [мягкое ключевое слово](https://python-all.ru/3/reference/lexical_analysis.html#soft-keywords).140141Токенизатор никогда не производит это значение. Чтобы проверить мягкое ключевое слово, передайте строку токена [`NAME`](https://python-all.ru/3/library/token.html#token.NAME) в [`keyword.issoftkeyword()`](https://python-all.ru/3/library/keyword.html#keyword.issoftkeyword).142143#### `token.ERRORTOKEN`144145Значение токена, используемое для указания неверного ввода.146147Модуль [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize) обычно указывает на ошибки с помощью возбуждения исключений, а не выдачи этого токена. Он также может выдавать такие токены, как [`OP`](https://python-all.ru/3/library/token.html#token.OP) или [`NAME`](https://python-all.ru/3/library/token.html#token.NAME), со строками, которые впоследствии отвергаются парсером.148149Оставшиеся токены представляют конкретные [операторы](https://python-all.ru/3/reference/lexical_analysis.html#operators) и [разделители](https://python-all.ru/3/reference/lexical_analysis.html#delimiters). (Модуль [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize) сообщает о них как о [`OP`](https://python-all.ru/3/library/token.html#token.OP); см. `exact_type` в документации `tokenize` для подробностей.)150151| Токен | Значение |152| --- | --- |153| token.LPAR | `"("` |154| token.RPAR | `")"` |155| token.LSQB | `"["` |156| token.RSQB | `"]"` |157| token.COLON | `":"` |158| token.COMMA | `","` |159| token.SEMI | `";"` |160| token.PLUS | `"+"` |161| token.MINUS | `"-"` |162| token.STAR | `"*"` |163| token.SLASH | `"/"` |164| token.VBAR | `"\|"` |165| token.AMPER | `"&"` |166| token.LESS | `"<"` |167| token.GREATER | `">"` |168| token.EQUAL | `"="` |169| token.DOT | `"."` |170| token.PERCENT | `"%"` |171| token.LBRACE | `"{"` |172| token.RBRACE | `"}"` |173| token.EQEQUAL | `"=="` |174| token.NOTEQUAL | `"!="` |175| token.LESSEQUAL | `"<="` |176| token.GREATEREQUAL | `">="` |177| token.TILDE | `"~"` |178| token.CIRCUMFLEX | `"^"` |179| token.LEFTSHIFT | `"<<"` |180| token.RIGHTSHIFT | `">>"` |181| token.DOUBLESTAR | `"**"` |182| token.PLUSEQUAL | `"+="` |183| token.MINEQUAL | `"-="` |184| token.STAREQUAL | `"*="` |185| token.SLASHEQUAL | `"/="` |186| token.PERCENTEQUAL | `"%="` |187| token.AMPEREQUAL | `"&="` |188| token.VBAREQUAL | `"\|="` |189| token.CIRCUMFLEXEQUAL | `"^="` |190| token.LEFTSHIFTEQUAL | `"<<="` |191| token.RIGHTSHIFTEQUAL | `">>="` |192| token.DOUBLESTAREQUAL | `"**="` |193| token.DOUBLESLASH | `"//"` |194| token.DOUBLESLASHEQUAL | `"//="` |195| token.AT | `"@"` |196| token.ATEQUAL | `"@="` |197| token.RARROW | `"->"` |198| token.ELLIPSIS | `"..."` |199| token.COLONEQUAL | `":="` |200| token.EXCLAMATION | `"!"` |201202Предоставляются следующие константы, не являющиеся токенами:203204#### `token.N_TOKENS`205206Количество типов токенов, определённых в этом модуле.207208#### `token.EXACT_TOKEN_TYPES`209210Словарь, сопоставляющий строковое представление токена с его числовым кодом.211212Добавлено в версии 3.8.213214Изменено в версии 3.5: Добавлены токены `AWAIT` и `ASYNC`.215216Изменено в версии 3.7: Добавлены токены [`COMMENT`](https://python-all.ru/3/library/token.html#token.COMMENT), [`NL`](https://python-all.ru/3/library/token.html#token.NL) и [`ENCODING`](https://python-all.ru/3/library/token.html#token.ENCODING).217218Изменено в версии 3.7: Удалены токены `AWAIT` и `ASYNC`. «async» и «await» теперь токенизируются как токены [`NAME`](https://python-all.ru/3/library/token.html#token.NAME).219220Изменено в версии 3.8: Добавлены токены [`TYPE_COMMENT`](https://python-all.ru/3/library/token.html#token.TYPE_COMMENT), [`TYPE_IGNORE`](https://python-all.ru/3/library/token.html#token.TYPE_IGNORE), [`COLONEQUAL`](https://python-all.ru/3/library/token.html#token.COLONEQUAL). Добавлены обратно токены `AWAIT` и `ASYNC` (они необходимы для поддержки разбора старых версий Python для [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) с `feature_version`, установленным в 6 или ниже).221222Изменено в версии 3.12: Добавлен [`EXCLAMATION`](https://python-all.ru/3/library/token.html#token.EXCLAMATION).223224Изменено в версии 3.13: Снова удалены токены `AWAIT` и `ASYNC`.225