Мы говорили о стилях форматировании кода (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 в Москве.