# Python Formatter

URL: https://discuvr.org/python-formatter/?hl=ru
Last updated: 2026-11-07
MCP tool: `format_python`

Вставьте Python, и Black отформатирует его с вашей длиной строки. Синтаксическая ошибка покажет точную строку. Код не выполняется и не сохраняется.

Этот инструмент запускает Black - форматтер, с которым уже согласно большинство проектов на Python - над тем, что вы вставите, с выбранной вами длиной строки и обработкой кавычек. Если файл не разбирается, указывается, в какой строке, а если он уже отформатирован, об этом тоже сообщается, вместо того чтобы притворяться, что что-то было сделано.

## Что делает

- Форматирование Black на 79, 88, 100 или 120 столбцов.
- Режим "только проверка": узнайте, изменился бы файл, без его изменения.
- Сохраните свой стиль кавычек или позвольте Black его нормализовать.
- Учитывайте или игнорируйте магическую завершающую запятую, которая держит коллекцию развёрнутой.
- Укажите конкретную версию Python, когда синтаксис зависит от версии.
- Синтаксические ошибки сообщают строку, столбец и окружающий код.
- Сообщает, сколько строк было добавлено и удалено, плюс форму файла.

## Как это работает

1. Вставьте код или целый файл.
2. Выберите длину строки и интересующие вас параметры.
3. Нажмите "Форматировать", затем скопируйте или скачайте результат.

## Ваш код никогда не выполняется

Форматирование Python не требует его выполнения. Код разбирается в синтаксическое дерево и переписывается на основе этого дерева, полностью в памяти - он никогда не записывается в файл, никогда не импортируется и никогда не выполняется. Форматтер, который бы выполнял то, что вы вставили, был бы удалённой командной строкой с текстовым полем.

## Почему Black, а не собственное мнение

Black - это преобразование, сохраняющее AST: код на выходе - та же программа, что и код на входе. Это свойство - вся причина, по которой форматтеру можно доверять, и именно поэтому никакая языковая модель не участвует ни в одной части этого инструмента. Модель, которой попросили привести код в порядок, будет иногда переписывать строку по пути, а незаметное изменение работающего кода - единственный сбой, который форматтер не может себе позволить.

## Только проверка

Тот же вопрос, что задаёт CI: изменился бы этот файл? Режим проверки возвращает ваш исходный код без изменений и сообщает, отформатировал бы его Black и на сколько строк. Это быстрый способ узнать, почему конвейер завершается с ошибкой на файле, который вы не можете воспроизвести локально.

## Магическая завершающая запятая и fmt: off, разобранные примеры

Запятая после последнего элемента говорит Black оставить вызов или коллекцию по одному элементу на строку: result = compute(alpha, beta,) возвращается четырьмя строками, где alpha, и beta, стоят каждый на своей строке. Включите опцию игнорирования магической завершающей запятой, и тот же ввод станет result = compute(alpha, beta), если помещается в длину строки. Чтобы защитить вручную выровненный блок, например матрицу, поставьте # fmt: off строкой выше и # fmt: on ниже: Black оставит всё между ними так, как вы написали. # fmt: skip в конце строки защищает только эту строку. Это собственные комментарии Black, поэтому они работают и тогда, когда Black запускает CI вашего проекта.

## Вопросы

**Загружается или сохраняется ли мой код?**

Он отправляется на сервер, форматируется в памяти и возвращается в том же ответе. Ничего не записывается на диск, не кэшируется и не журналируется, а запись об использовании хранит только счётчики - размер, параметры, сколько строк изменилось - но никогда сам код.

**Меняет ли форматирование то, что делает мой код?**

Нет. Black меняет оформление, а не поведение, но делает больше, чем двигает пробелы. Он убирает лишние скобки (x = (1) становится x = 1), переводит в нижний регистр префиксы и экспоненты чисел (0XABCDEF становится 0xABCDEF, 1E5 становится 1e5), добавляет завершающую запятую, когда разбивает вызов на несколько строк, сокращает серии пустых строк и обрезает пробелы внутри docstring (""" Doc. """ становится """Doc."""). Последнее меняет текст __doc__, что важно, только если ваш код читает собственные docstring.

**Почему мой файл вообще не был переформатирован?**

Потому что он уже был отформатирован с выбранной вами длиной строки. Инструмент сообщает "уже отформатирован", а не тихо возвращает копию.

**Сортирует ли он мои импорты?**

Нет. Сортировка импортов - задача isort, а не Black, и они расходятся во мнениях достаточно часто, чтобы это удивило вас, если бы это делалось здесь.

**Может ли он отформатировать файл с синтаксической ошибкой?**

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

**Следует ли он PEP 8?**

Black совместим с PEP 8 с одним известным отступлением: его длина строки по умолчанию - 88, а не 79. Выберите 79 в селекторе длины строки, если вам нужна более строгая цифра.

**Какой размер файла можно отформатировать?**

До 400 000 символов за один запуск. Форматирование прерывается через 10 секунд, что случается только с очень большими или сильно повторяющимися файлами, и с одного IP-адреса можно выполнить 30 запусков за 10 минут.

**Как получить такое же форматирование в редакторе, в pre-commit или в CI?**

Эта страница использует Black, его версия показана в шапке страницы на широких экранах. Black читает настройки проекта из pyproject.toml, раздел [tool.black], под длинными именами опций: line-length = 88 для выбранного параметра "Длина строки", skip-string-normalization = true, если вы отметили "Сохранять мои кавычки", skip-magic-trailing-comma = true для "Игнорировать «магическую» завершающую запятую" и target-version = ["py311"] для фиксированного значения "Цель". Плагины редакторов и хук pre-commit читают тот же файл. Запускайте black . для форматирования и black --check --diff . в CI: команда ничего не меняет и завершается с кодом 1, если файл был бы переформатирован. Закрепите ту же версию Black, что и на этой странице: первый релиз каждого календарного года может менять стабильный стиль.

**Совпадает ли результат с форматтером Ruff (ruff format)?**

Почти всегда, но не байт в байт. Форматтер Ruff задуман как прямая замена Black, и документация Ruff сообщает, что на крупных проектах, уже отформатированных Black, таких как Django и Zulip, более 99,9% строк получаются идентичными. Сильнее он расходится на коде, который никогда не проходил через Black, особенно в комментариях в конце строки, а его документация перечисляет намеренные отличия. Длина строки по умолчанию у него тоже 88, задаётся через line-length в [tool.ruff]; quote-style = "preserve" в [tool.ruff.format] соответствует "Сохранять мои кавычки", а skip-magic-trailing-comma = true соответствует "Игнорировать «магическую» завершающую запятую". Если ваш CI запускает ruff format --check, проверяйте файл в Ruff, а не на этой странице.

## Ещё в разделе «Инструменты разработчика»

- [Просмотр HTML](https://discuvr.org/html-viewer/?hl=ru)
- [Калькулятор подсетей IP](https://discuvr.org/ip-subnet-calculator/?hl=ru)
- [Кодирование / декодирование](https://discuvr.org/encode-decode/?hl=ru)
- [Конвертер времени Unix](https://discuvr.org/timestamp-converter/?hl=ru)

## Часто используют вместе с

- [Сравнение текстов](https://discuvr.org/text-diff/?hl=ru)
- [Конвертер регистра и инструменты для строк](https://discuvr.org/case-converter/?hl=ru)
- [Study Buddy](https://discuvr.org/study-buddy/?hl=ru)

---

Part of Discuvr (https://discuvr.org/): Discuvr is a collection of free, focused tools for day-to-day professional work - office and data utilities, legal and compliance helpers, privacy and security checks, and developer formatters. Every tool has its own page, and most can also be called from ChatGPT or Claude over MCP.
