Выбери своего бойца: PEP8 vs Black vs YAPF

автор рубрика
Выбери своего бойца: PEP8 vs Black vs YAPF

Мы говорили о стилях форматировании кода (code style) на Python в соответствии PEP 8 и Black. В этой статье сравним их, включив ещё один популярный инструмент под названием YAPF. В этой статье вы узнаете: чем отличается autopep8, Black и YAPF и какие предпочтения у разработчиков на основании звезд на GitHub.

PEP 8 и autopep8

PEP 8 (о нем тут) — стандартный способ форматирования кода, который принят самими разработчиками языка Python. Программистам и Data Scientist’ам рекомендуется соблюдать хотя бы его.

В качестве инструмента форматирования согласно PEP 8 используют autopep8 (есть и другие, но этот самый популярный). Он запускается через командую строку, поддерживает множество аргументов. Но ожидать, что ваш Python-код станет повсюду единообразным не стоит, поскольку PEP 8 не дает строгих рекомендаций. Но уж лучше с ним, чем без него.

Цифры на GitHub:

  • Ссылка: https://github.com/hhatto/autopep8
  • Количество звезд: 3.9k
  • Количество форков: 248
  • Количество коммитов: 2.7k

Black

Black (о нем тут) является наиболее строгим инструментом форматирования. С одной стороны, это помогает придерживаться одного стиля форматирования кода, с другой, некоторые правила могут вызывать внутреннее отторжение. Кроме того, в отличие от YAPF, он не поддерживает множество настроек. По факту Black имеет две перенастраивыемые опции:

  • изменение допустимой длины строки (по умолчанию стоит 88),
  • разрешение использования одинарных кавычек (по умолчанию разрешаются только двойные).

Личные предпочтения могут мешать выбору этого инструмента. Например, кому-то может не понравиться компоновка словарей (dict). Например, следующий код на Python написан в соответствии с PEP 8:

data = {
    'key1': {
        'subkey': 'value1',
        'foo': 'bar1'
    },
    'key2': {
        'subkey': 'value2',
        'foo': 'bar2'
    }
}

— при использовании Black он преобразуется в это:

data = {
    "key1": {"subkey": "value1", "foo": "bar1"},
    "key2": {"subkey": "value2", "foo": "bar2"},
}

Для многих первый вариант кажется более ясным и понятным.

Цифры на GitHub:

  • Ссылка: https://github.com/psf/black
  • Количество звезд: 22k
  • Количество форков: 1.4k
  • Количество коммитов: 1k

YAPF

YAPF является не официальным продуктом от Google, но кодом, который, так случилось, владеет Google. YAPF основан на таком инструменте форматирования кода Си-подобных языков, как clang-format. Он берет код и форматирует его в соответствии с заданными настройками, причем отформатирует код даже в случае, если он не нарушает PEP 8. Например, вы можете задать необходимую компоновку словарей, а все остальное сделать как в Black. Эти настройки сохраняются и передаются другим программистам.

Если вы работаете над большим проектом со многими разработчиками, вам нужен один стиль форматирования кода на Python и у вас есть время, чтобы освоиться с настройками YAPF (а их очень много), то этот инструмент для вас.

Цифры на GitHub:

  • Ссылка: https://github.com/google/yapf
  • Количество звезд: 12k
  • Количество форков: 813
  • Количество коммитов: 1k

 

Ещё больше о написании грамотного кода на Python с реальными примерами из Data Science вы узнаете на специализированном бесплатном курсе по «Основы языка Python для анализа данных и решения задач машинного обучения» в лицензированном учебном центре обучения и повышения квалификации разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве.

Комментировать