# `token` — Constants used with Python parse trees

소스 코드: Lib/token.py

This module provides constants which represent the numeric values of leaf nodes of the parse tree (terminal tokens). Refer to the file `Grammar/Tokens` in the Python distribution for the definitions of the names in the context of the language grammar. The specific numeric values which the names map to may change between Python versions.

이 모듈은 숫자 코드에서 이름으로의 매핑과 몇몇 함수도 제공합니다. 이 함수는 파이썬 C 헤더 파일의 정의를 반영합니다.

Note that a token’s value may depend on tokenizer options. For example, a `"+"` token may be reported as either `PLUS` or `OP`, or a `"match"` token may be either `NAME` or `SOFT_KEYWORD`.

token.tok_name

  이 모듈에 정의된 상수의 숫자 값을 다시 이름 문자열로 매핑하여 사람이 읽을 수 있는 구문 분석 트리 표현을 생성할 수 있도록 하는 딕셔너리.

token.ISTERMINAL(x)

  터미널 토큰값이면 `True`를 반환합니다.

token.ISNONTERMINAL(x)

  비 터미널 토큰값이면 `True`를 반환합니다.

token.ISEOF(x)

  x가 입력의 마지막을 나타내는 표시면 `True`를 반환합니다.

토큰 상수는 다음과 같습니다:

token.NAME

  Token value that indicates an identifier. Note that keywords are also initially tokenized an `NAME` tokens.

token.NUMBER

  Token value that indicates a numeric literal

token.STRING

  Token value that indicates a string or byte literal, excluding formatted string literals. The token string is not interpreted: it includes the surrounding quotation marks and the prefix (if given); backslashes are included literally, without processing escape sequences.

token.OP

  A generic token value that indicates an operator or delimiter.

  CPython 구현 상세: This value is only reported by the `tokenize` module. Internally, the tokenizer uses exact token types instead.

token.COMMENT

  Token value used to indicate a comment. The parser ignores `COMMENT` tokens.

token.NEWLINE

  Token value that indicates the end of a logical line.

token.NL

  Token value used to indicate a non-terminating newline. `NL` tokens are generated when a logical line of code is continued over multiple physical lines. The parser ignores `NL` tokens.

token.INDENT

  Token value used at the beginning of a logical line to indicate the start of an indented block.

token.DEDENT

  Token value used at the beginning of a logical line to indicate the end of an indented block.

token.FSTRING_START

  Token value used to indicate the beginning of an f-string literal.

  CPython 구현 상세: The token string includes the prefix and the opening quote(s), but none of the contents of the literal.

token.FSTRING_MIDDLE

  Token value used for literal text inside an f-string literal, including format specifications.

  CPython 구현 상세: Replacement fields (that is, the non-literal parts of f-strings) use the same tokens as other expressions, and are delimited by `LBRACE`, `RBRACE`, `EXCLAMATION` and `COLON` tokens.

token.FSTRING_END

  Token value used to indicate the end of a f-string.

  CPython 구현 상세: The token string contains the closing quote(s).

token.ENDMARKER

  Token value that indicates the end of input.

token.ENCODING

  소스 바이트열을 텍스트로 디코딩하는 데 사용되는 인코딩을 나타내는 토큰값. `tokenize.tokenize()`에 의해 반환되는 첫 번째 토큰은 항상 `ENCODING` 토큰입니다.

  CPython 구현 상세: This token type isn’t used by the C tokenizer but is needed for the `tokenize` module.

The following token types are not produced by the `tokenize` module, and are defined for special uses in the tokenizer or parser:

token.TYPE_IGNORE

  Token value indicating that a `type: ignore` comment was recognized. Such tokens are produced instead of regular `COMMENT` tokens only with the `PyCF_TYPE_COMMENTS` flag.

token.TYPE_COMMENT

  Token value indicating that a type comment was recognized. Such tokens are produced instead of regular `COMMENT` tokens only with the `PyCF_TYPE_COMMENTS` flag.

token.SOFT_KEYWORD

  Token value indicating a soft keyword.

  The tokenizer never produces this value. To check for a soft keyword, pass a `NAME` token’s string to `keyword.issoftkeyword()`.

token.ERRORTOKEN

  Token value used to indicate wrong input.

  The `tokenize` module generally indicates errors by raising exceptions instead of emitting this token. It can also emit tokens such as `OP` or `NAME` with strings that are later rejected by the parser.

The remaining tokens represent specific operators and delimiters. (The `tokenize` module reports these as `OP`; see `exact_type` in the `tokenize` documentation for details.)

Token | Value
--- | ---

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

`"!"`

The following non-token constants are provided:

token.N_TOKENS

  The number of token types defined in this module.

token.EXACT_TOKEN_TYPES

  A dictionary mapping the string representation of a token to its numeric code.

  Added in version 3.8.

버전 3.5에서 변경: Added `AWAIT` and `ASYNC` tokens.

버전 3.7에서 변경: `COMMENT`, `NL` 및 `ENCODING` 토큰이 추가되었습니다.

버전 3.7에서 변경: Removed `AWAIT` and `ASYNC` tokens. “async” and “await” are now tokenized as `NAME` tokens.

버전 3.8에서 변경: Added `TYPE_COMMENT`, `TYPE_IGNORE`, `COLONEQUAL`. Added `AWAIT` and `ASYNC` tokens back (they’re needed to support parsing older Python versions for `ast.parse()` with `feature_version` set to 6 or lower).

버전 3.12에서 변경: Added `EXCLAMATION`.

버전 3.13에서 변경: Removed `AWAIT` and `ASYNC` tokens again.