ToolActToolAct

Инструмент форматирования Python

Вход Python
Выход
Строк: 1Символов: 0Байт: 0
Строк: 1Символов: 0

Что такое форматирование Python?

Python Formatter упорядочивает Python-код с едиными отступами, переносами строк и читаемой структурой. В Python отступы являются частью синтаксиса, поэтому плохо вставленный или смешанный по стилю код может не только плохо выглядеть, но и менять поведение или вызывать ошибки. Инструмент полезен для скриптов, фрагментов notebooks, сгенерированного кода, учебных примеров, ревью и небольших refactor, делая функции, классы, imports, списки, словари и вложенные выражения понятнее. Форматирование не исправляет логические баги, type errors, отсутствующие зависимости, среду выполнения и неверное использование API. В проектах результат нужно согласовать с Black, Ruff, isort или правилами команды.

Как использовать

Как использовать

  1. Вставьте или введите код Python в левое поле ввода
  2. Выберите размер отступа (2 пробела, 4 пробела или Tab)
  3. Нажмите «Format» для форматирования кода или «Minify» для сжатия
  4. Результат отображается справа с подсветкой синтаксиса
  5. Нажмите «Copy», чтобы скопировать в буфер обмена

Описание параметров

Размер отступаВыберите отступ: 2 пробела, 4 пробела или Tab. PEP 8 рекомендует 4 пробела.
FormatФорматирует код с правильными отступами и переносами строк
MinifyУдаляет пробелы и комментарии, чтобы уменьшить размер файла

Советы по Python

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

Применение

Очистка вставленного Python-кода с сохранением строк и комментариевИспользуйте форматтер, когда фрагмент имеет неровные отступы, лишние пустые строки или скопированные пробелы из чата, вики или тикета. Он защищает строковые литералы, блоки в тройных кавычках и комментарии перед нормализацией отступов, поэтому текст документации и встроенные заметки не перезаписываются случайно. Результат — готовый фрагмент, который можно вставить в README или ответ на Stack Overflow без повторного форматирования.
Поиск простых ошибок со скобками и строками перед публикацией кодаИнструмент проверяет парность круглых, квадратных и фигурных скобок, а также незакрытые тройные кавычки перед выводом результата. Это не полноценный интерпретатор Python и не замена Black, но он ловит очевидные структурные ошибки в небольших примерах, уроках и ответах в саппорте. Сочетайте форматтер с настоящим линтером в CI для поиска логических проблем, которые форматтер не видит.
Переключение между читаемым и компактным выводомВыберите 2 пробела, 4 пробела или табуляцию для форматированного вывода, либо сожмите код в компактную однострочную форму через точку с запятой для коротких демо и вставок. Результат можно скопировать или скачать как formatted.py или minified.py в зависимости от выбранного режима. Минифицированная форма удобна для вставки в shell-однострочники или короткие email-подписи.
Аудит f-строк и тройных docstringПрогоните через форматтер вложенные f-строки, regex-примеры и тройные docstring с встроенными блоками кода, чтобы убедиться, что фигурные и кавычки остаются сбалансированными. Неожиданные отступы внутри docstring обычно означают, что в исходнике выше не закрыта тройная кавычка. Проверьте оригинал, если форматтер сообщает об ошибке разбора на фрагменте, который визуально выглядит корректно.
Сравнение Black (88 колонок) с PEP 8 (79 колонок) и autopep8/yapf/blackВывод здесь использует настраиваемую ширину строки, а не фиксированный стиль проекта. Более широкий формат на 88 колонок, который предпочитает Black, даёт компактный результат, а стандарт PEP 8 в 79 колонок — то, что используют autopep8 и большинство редакторов. Black — строгий и не настраивается, yapf ближе к стилю Google и допускает тонкую настройку, а autopep8 исправляет только нарушения PEP 8 без реструктуризации кода. Используйте этот браузерный инструмент для быстрой очистки, а затем запускайте Black или Ruff в CI для поддержания единого стиля команды.

Технический принцип

Python — один из немногих популярных языков, использующих отступы вместо фигурных скобок для определения блоков кода. Последовательные операторы с одинаковым отступом принадлежат одному блоку; один пробел в большую или меньшую сторону — и семантика меняется. Такой дизайн делает визуальную структуру кода соответствующей его логике, но требует от форматтера точного определения логических уровней. Форматтер сначала сканирует код с помощью модуля tokenize или пользовательского лексического анализатора, рассматривая начальные пробелы каждой строки как информацию об отступах. Операторы внутри скобок (круглых, квадратных или фигурных) могут занимать несколько строк, и в этом случае отступ определяется глубиной вложенности скобок, а не начальными пробелами. Пробелы внутри строковых литералов (тройные кавычки, одинарные кавычки) нельзя изменять, иначе значение строки изменится. PEP 8 — официальное руководство по стилю Python, определяющее отступы в 4 пробела, максимальную длину строки 79 символов, пробелы вокруг операторов, сгруппированные импорты и соглашения об именовании. Black — яркий представитель школы форматтеров без конфигурации: он навязывает двойные кавычки, запятые в конце списков и длину строки в 88 символов с жёсткими и не настраиваемыми правилами. yapf ближе к стилю Google и допускает настройку.

  • Семантика отступов: Python использует начальные пробелы для определения блоков кода; одинаковый отступ означает один блок, изменение отступа переключает область видимости
  • Правила PEP 8: отступ в 4 пробела, ширина строки 79 символов, пробелы вокруг операторов, CapWords для имён классов, snake_case для имён функций
  • Переносы строк внутри скобок: операторы внутри скобок (круглых, квадратных, фигурных) могут переноситься, а отступ определяется глубиной вложенности скобок, а не начальными пробелами
  • Границы строк: пробелы внутри тройных кавычек и docstring нельзя изменять, иначе это нарушит содержимое литерала
  • Стиль Black: нулевая конфигурация, не настраивается, навязывает двойные кавычки, запятые в конце, 88 символов на строку, идентичный результат во всём проекте
  • Аннотации типов: представлены в PEP 484; форматтер сохраняет правильные пробелы вокруг -> типов возврата и параметр : аннотация типа

Примеры

Форматирование определений функций

Вход: def add(a,b):
  return a+b


def subtract(a,b):
  return a-b
Выход:
def add(a, b):
    return a + b


def subtract(a, b):
    return a - b

Форматирование списковых включений

Вход: result=[x*x for x in range(10) if x%2==0]
result2={k:v for k,v in items if v>0}
Выход:
result = [x * x for x in range(10) if x % 2 == 0]
result2 = {k: v for k, v in items if v > 0}

Форматирование определения класса

Вход: class User:
  def __init__(self,name,email):
   self.name=name
    self.email=email
  def __repr__(self):
    return f"User({self.name})"
Выход:
class User:
    def __init__(self, name, email):
        self.name = name
        self.email = email

    def __repr__(self):
        return f"User({self.name})"

Часто задаваемые вопросы

Какой стиль Python используется?

Большинство сборок по умолчанию следуют PEP 8, часто через Black: ширина строки 88 символов, двойные кавычки, без хвостовых точек с запятой. Black упрям — он отметает большинство настроек, чтобы давать единый стиль по проекту. У autopep8 и yapf больше опций, если нужна гибкость.

Имеют ли отступы значение для форматтера?

Да — отступы в Python определяют структуру блоков. Форматтер уважает существующие границы блоков; если в вводе смешаны табы/пробелы или неверные уровни отступов, разбор упадёт ещё до запуска форматирования.

Исправит ли он порядок импортов?

Black, autopep8 и yapf работают только с пробельными символами. Чтобы отсортировать и сгруппировать импорты, нужен isort (или ruff --fix). Некоторые страницы комбинируют их; смотрите конфигурацию, чтобы понимать, что фактически применяется.

Поддерживаются ли аннотации типов?

Да в современных парсерах. Аннотации типов в сигнатурах функций, переменных и атрибутах классов (PEP 526, 484, 612) форматируются корректно. Самый новый синтаксис (синтаксис обобщений PEP 695 в 3.12+) требует свежего парсера; старые сборки могут спотыкаться.

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

Нет. Форматирование идёт в вашем браузере с помощью JavaScript-реализации AST Python. Вставленный код никуда не передаётся.

Совпадёт ли результат с black у меня в CI?

Близко, но не всегда идентично. Разные версии Black могут форматировать слегка по-разному (Black регулярно обновляет свои правила). Для согласованности с CI запускайте одну и ту же версию Black локально и в CI; считайте эту страницу быстрой визуальной проверкой.

Почему он переносит длинные строки на несколько строк?

PEP 8 и Black стремятся к ≤88 символам в строке. Длинные выражения, вызовы функций со многими аргументами и цепочки вызовов методов разбиваются по строкам ради читаемости. Если у вашей команды 100 или 120, поправьте опцию ширины строки.

Связанные инструменты

Инструмент форматирования JavaScript

Онлайн-инструмент для форматирования JavaScript с подсветкой синтаксиса, сжатием и проверкой. Одним нажатием упорядочите JS код.

Инструмент форматирования Java

Онлайн-инструмент для форматирования Java с подсветкой синтаксиса, сжатием и проверкой. Одним нажатием упорядочите Java код.

Инструмент форматирования JSON

Онлайн-инструмент для форматирования JSON с подсветкой синтаксиса, обнаружением ошибок и сжатием. Одним нажатием форматируйте JSON данные, быстро находите ошибки формата.

Инструмент форматирования YAML

Онлайн-инструмент для форматирования YAML с проверкой синтаксиса, автоматическим отступом и конвертацией формата. Легкая обработка конфигурационных файлов.

Markdown-редактор

Бесплатный онлайн-редактор Markdown с предпросмотром в реальном времени, подсветкой синтаксиса и экспортом в HTML. Поддерживает таблицы, блоки кода и диаграммы.

Инструмент тестирования регулярных выражений

Бесплатный онлайн-тестер регулярных выражений с мгновенным сопоставлением и подсветкой совпадений. Отлаживайте и проверяйте regex на ваших примерах.