Что такое Black и для чего он используется в Python

Ответ

Black — это бескомпромиссный (opinionated) автоматический форматер кода для Python. Его главная цель — обеспечить единообразие стиля кода в проекте, минимизируя споры в команде и время на ручное форматирование.

Ключевые особенности и философия

Black сознательно предлагает очень мало настроек. Он форматирует код по своим строгим правилам, которые являются расширением стандарта PEP 8.

  • Единый стиль: Устраняет споры о мелких деталях стиля. Если код отформатирован с помощью Black, он считается каноничным.
  • Читаемость: Приоритет отдается читаемости кода. Например, длина строки по умолчанию ограничена 88 символами.
  • Детерминированность: Применение Black к коду всегда дает один и тот же результат.
  • Автоматизация: Экономит время разработчиков, которое раньше тратилось на ручное выравнивание кода.

Пример форматирования

До:

def calculate_price ( base, tax, discount,quantity=1):
  total = (base * (1 + tax) - discount) * quantity
  return total

После запуска black:

def calculate_price(base, tax, discount, quantity=1):
    total = (base * (1 + tax) - discount) * quantity
    return total

Установка и использование

  1. Установка:

    pip install black
  2. Форматирование файла или директории:

    black my_script.py
    black my_project_directory/
  3. Проверка без изменения файлов (полезно в CI/CD):

    black --check .

Black часто интегрируют в рабочие процессы с помощью pre-commit хуков, чтобы форматирование применялось автоматически перед каждым коммитом.

Ответ 18+ 🔞

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

В чём же его, сука, соль?

Black — это opinionated, что значит «бескомпромиссный». У него настроек — нихуя, точнее, почти нихуя. Он берёт PEP 8 и говорит: «Хорошо, но я сделаю лучше, нахуй». И делает.

  • Единый стиль на всех: Больше не надо тратить пол-митинга, обсуждая, ставить ли пробел после запятой в списке из трёх элементов. Black уже всё решил за тебя. Принял его правила — и живи спокойно, ёпта.
  • Читаемость — наше всё: Он, например, строки обрезает по 88 символов, не спрашивая. Считает, что так удобнее глазам. Ну, а хули, может, он и прав.
  • Детерминированность, ёбана: Дал ему один и тот же код — получишь один и тот же результат. Никаких сюрпризов, как с капризной девушкой. Предсказуемость, блядь.
  • Автоматизация, чтоб её: Экономит кучу времени, которое ты раньше тратил, выравнивая код вручную, как последний лох. Теперь можно заняться чем-то полезным.

Смотри, как он работает

Был у тебя код, написанный, будто пьяной обезьяной:

def calculate_price ( base, tax, discount,quantity=1):
  total = (base * (1 + tax) - discount) * quantity
  return total

Ты запускаешь black, и он, сука, как строгий учитель, приводит всё в божеский вид:

def calculate_price(base, tax, discount, quantity=1):
    total = (base * (1 + tax) - discount) * quantity
    return total

Всё ровно, красиво, отступы как у взрослых. Никаких лишних движений.

Как с этим чудом обращаться

  1. Поставить, ясное дело:

    pip install black
  2. Применить к своему бардаку: Укажи ему на файл или целую папку, и пусть работает.

    black my_script.py
    black my_project_directory/
  3. Проверить, не насрал ли ты где (очень полезно в CI/CD, чтобы не пропустить кривой код):

    black --check .

Умные люди вообще встраивают его в pre-commit хуки, чтобы он сам, блядь, подчищал за тобой код перед каждым коммитом. Идея, в общем-то, охуенная — пишешь как попало, а в репозиторий летит уже причёсанная версия. Красота!