Как автоматически отформатировать код Python с помощью черного

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

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

Но по мере того, как программы становятся все более и более сложными, их становится все труднее и труднее понимать. В какой-то момент (около 15 000 строк кода) становится сложнее понять код, который вы сами написали.

Разница между работой над хорошо отформатированным кодом и работой над плохо отформатированным кодом похожа на разницу между жизнью во дворце и жизнью в грязном доме.

Почему форматирование кода Python важно

Читаемость

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

Это поможет на собеседовании по кодированию

Когда вы идете на собеседование по кодированию, иногда интервьюерам будет интересно, правильно ли вы форматируете код. Если вы забудете сделать это форматирование, вы можете потерять перспективу работы только из-за плохо отформатированного кода.

Поддержка команды

Форматирование кода становится более важным, когда вы работаете в команде . Скорее всего, над одним и тем же программным проектом будут работать несколько человек, и ваши товарищи по команде должны понимать код, который вы пишете. Иначе работать вместе станет труднее.

Это позволяет легко обнаруживать ошибки

Плохо отформатированный код может затруднить обнаружение ошибок или даже работу над программой. На это просто ужасно смотреть. Это оскорбление твоих глаз.

Пилинт и Флаке8

Большинству разработчиков Python нравится использовать Pylint или Flake8 для проверки своего кода на наличие ошибок и руководств по стилю.

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

Flake8 - это библиотека Python, в которую входят PyFlakes , pycodestyle и скрипт МакКейба Неда Батчелдера . Это отличный инструментарий для проверки вашей базы кода на соответствие стилю кодирования (PEP8) , ошибок программирования, таких как «библиотека импортирована, но не используется», «Неопределенное имя» и кода без отступа.

Проблема в том, что эти инструменты сообщают только о проблемах, которые они идентифицируют в исходном коде, и оставляют ответственность за их исправление разработчиками Python!

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

Введение в черный

Из проекта README:

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

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

Итак, давайте посмотрим, как его использовать.

Установить черный

Черный можно установить, запустив pip install black. Для работы требуется Python 3.6.0+. После установки Black у вас будет новый инструмент командной строки под названием black, доступный в вашей оболочке, и вы готовы начать!

Чтобы сразу начать работу с разумными значениями по умолчанию, выберите файл python, который вы хотите отформатировать, и затем напишите в терминале черный filename.py . Затем Black отформатирует ваш файл python.

Теперь посмотрим, чем нам могут помочь черные.

Форматировать один файл

Давайте посмотрим на этот простой пример: вот две мои функции python в моем файле python с именем sample_code.py.

Вы можете использовать black sample_code.pyв терминале для изменения формата. После запуска Black вы увидите следующий результат:

Затем вы можете открыть sample_code.py, чтобы увидеть отформатированный код Python:

Код Python теперь отформатирован и более читабелен.

Форматировать несколько файлов

Чтобы отформатировать более одного файла python, напишите black folder_name/в терминале.

Отформатированы три файла Python в папке с именем python_with_black.

Проверка файлов на форматирование

Если вы не хотите, чтобы Блэк изменял ваш файл, но вы хотите знать, считает ли Блэк, что файл должен быть изменен, вы можете использовать одну из следующих команд:

black --check .: Это проверит, какой файл (ы) python может быть отформатирован в текущей папке (но фактически не изменяет файл (ы) python).

black --check --diff file_name.py : Показывает, что нужно сделать с файлом, но не изменяет файл.

Изменить количество символов в строке

Обратите внимание, что для черного по умолчанию длина строки составляет 88 символов, но вы можете изменить это, используя параметр «-l» или «- -line-length».

Например, чтобы изменить до 60 символов: black -l 60 python_file.py.

Черный в Jupyter Notebook

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

Расширение Jupyter Black предоставляет

  • Кнопка на панели инструментов.
  • Сочетание клавиш для переформатирования текущей ячейки кода (по умолчанию: Ctrl-B).
  • Сочетание клавиш для переформатирования целых ячеек кода (по умолчанию: Ctrl-Shift-B).

Установите Jupyter Black

Сначала убедитесь, что вы установили jupyter-contrib-nbextensions и black, а затем выполните следующие команды.

jupyter nbextension install //github.com/drillan/jupyter-black/archive/master.zip — user

Затем включите расширение, запустив:

jupyter nbextension enable jupyter-black-master/jupyter-black 

Теперь вы можете начать форматировать код Python в каждой ячейке записной книжки.

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

Затем нажмите кнопку Jupyter Black:

Интеграция редактора

Вы можете интегрировать Black со своими любимыми редакторами. В настоящее время Black поддерживает PyCharm / IntelliJ IDEA, Wing IDE, Vim, Visual Studio Code, Sublime Text 3, Atom / Nuclide, Kakoune и Thonny. Следуйте инструкциям здесь, чтобы интегрировать Black с вашим любимым редактором.

Если вы хотите узнать больше о Black, я рекомендую посмотреть выступление Лукаша Ланги PyCon 2019.

Если вы узнали что-то новое или вам понравилось читать эту статью, поделитесь ею, чтобы другие могли ее увидеть. А пока до встречи в следующем посте! Со мной также можно связаться через Twitter @Davis_McDavid.