все Python 3astпонятие
tokenize
модуль
Лексический сканер исходного кода Python: делит текст программы на токены, включая комментарии.
Синтаксис
import tokenize
tokenize нужен, когда важен сам текст кода: подсветка, подсчёт комментариев, автоматическая правка без потери форматирования. Если нужна структура программы, а не поток токенов, берите ast — он строит дерево, но теряет комментарии. tokenize.tokenize() читает байты и сам определяет кодировку, а generate_tokens() принимает строки; путаница между ними — частая ошибка.
Примеры
import io
import tokenize
src = "x = 1 + 2 # sum\n"
for tok in tokenize.generate_tokens(io.StringIO(src).readline):
if tok.string.strip():
print(tokenize.tok_name[tok.type], tok.string) # → NAME x / OP = / NUMBER 1 / OP + / NUMBER 2 / COMMENT # sum
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности