Рубрики
Без рубрики

Руководство для начинающих по форматированию автоматического

Все любят Python! (по большей части). Но почему? Я спросил многих программистов в моей сети (поверьте мне, я ди … Tagged с помощью Python, Tooling, новичков, производительности.

Все любят Python! (по большей части). Но почему? Я спросил многих программистов в моей сети (поверьте мне, я сделал!). И наиболее выраженным ответом были его высокая читаемость, простой синтаксис и подобные питонические признаки. Действительно, высокий уровень читаемости был на вершине ума Гвидо Ван Россум По мере того, как у него развился Python.

Давайте возьмем небольшой пример. Основной продукт всех программ, печально известный “Привет, мир!” программа На Java выглядит так:

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}

Находясь на Python, это выглядит так:

print('Hello, world!')

Выглядит просто, верно? Еще лучшие примеры, такие как открытие и добавление файлов в Python, сравнительно более просты и менее налогообложения, чем другие языки.

Но прежде чем продолжить, давайте проясним несколько вещей.

  1. Есть языки с еще более простым синтаксисом и кривыми обучения, LISP и SmallTalk – отличные примеры. Даже рубин на рельсах может соответствовать ограничениям.

  2. Несмотря на то, что это просто, Python не лучший язык программирования; Нет лучшего языка программирования. Есть языки, которые вы знаете, вы любите его и оттачиваете свои навыки, используя их, и есть языки, которые вы не знаете и можете научиться когда -нибудь владеть линией. (PHP – это исключение, вы никогда не хотите практиковать PHP).

  3. Существуют языки для начинающих, Python-один из них, но я не думаю, что это хорошее описание.

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

Рекомендации по стилю питона

Теперь с этим, давайте поговорим о том, почему Python такой великий 😛. Итак, как упоминалось ранее, это простой синтаксис? Более высокая гибкость? Или что-то другое? Ну, на самом деле общая картина немного отличается. Python был разработан с учетом высокого уровня читаемости, это идея Этот код читается гораздо чаще, чем он написан , и вот где все склеивает вместе.

Python хорош, потому что легче Читать и понять , конечно, это означает, что письмо более доступно. Но письмо не является идеей Python, это Чтение кода Анкет Проще -синтаксис облегчает написание программ, но истинная цель, которую они служат, – это читателей и рецензентов, другие преимущества – просто вишня сверху. По этой причине Pythonistas следуют наборе руководящих принципов, a.k.a. “Pythonic” идиомы. Но почему я говорю об этом? Очевидно, что Python является гибким и простым для чтения/написания; Многие люди привлекают программы письма в Python, но они забывают, что это стилизационная часть Python, и, следовательно, результат – плохо отформатированный код, который не понимает меня, все еще работает нормально, но не то, что Python на самом деле предназначен для. В этом твите очень хорошо обобщает часть стиля.

PEP-8

Короче говоря, у нас есть несколько не очень строгих рекомендаций по стилю для Python. Ммм нет. На самом деле, процедуры очень строгие, адекватно отформатированы и общеприняты; Просто проблема в том, что новички не соблюдают их, и со временем это становится привычным.

PEP-8-руководство по стилю кода де-факто для Python. Это должно быть строго следовать и обязательно в лучших проектах, таких как «колба», «Tensorflow» и т. Д.

Хорошо документированная версия руководящих принципов можно найти Здесь Анкет Руководство автостопом по Python Является ли моя версия руководящих принципов для правильного форматированного кода.

Если вы новичок и хотите более простых рекомендаций PEP-8, я подготовил свой Собственная версия Руководства Python, используемые в проекте с открытым исходным кодом, Гнилые сценарии Анкет Это гораздо более удобно для начинающих, но также также соответствует обязательным руководствам PEP-8.

Автоформатирование

Теперь давайте обратимся к слону в комнате; Вы только начали кодировать в Python, и эти рекомендации кажутся слишком много? Вы опытный профессионал, но рекомендации PEP-8 все еще поражают вас иногда? Есть простое решение для всего этого, Автоформатирование Анкет Прежде чем попасть в автоформатирование, Должно быть ясно, что инструменты, упомянутые ниже, могут действовать как помощь, И нужно попытаться выучить руководящие принципы, и нужно писать хороший качественный код без использования какого -либо инструмента.

Несколько инструментов автоформатирования могут переформатировать ваш код в соответствии с PEP-8. Мы обсудим 3 моих любимых.

Но прежде чем обсудить автоформатирование, появляется один вопрос; Что если мой скрипт уже выглядит хорошо, и все работает правильно? Например, возьмите этот сценарий Python,

Это выглядит ужасно, но работает правильно, теперь я знаю, что это довольно экстремальный пример, но он служит здесь цели. Прежде чем что -либо, нам нужно определить, каковы расхождения в нашем коде. Для этого мы будем использовать Pycodestyle , ранее известно как PEP8 Анкет

pip install pycodestyle
pycodestyle test.py

Выход:

test.py:1:12: E401 multiple imports on one line
test.py:1:17: E703 statement ends with a semicolon
test.py:3:1: E302 expected 2 blank lines, found 1
test.py:4:5: E265 block comment should start with '# '
test.py:4:80: E501 line too long (135 > 79 characters)
test.py:5:15: E225 missing whitespace around operator
test.py:5:17: E201 whitespace after '('
test.py:5:21: E231 missing whitespace after ','
test.py:5:26: E231 missing whitespace after ','
test.py:5:31: E202 whitespace before ')'
test.py:5:33: E703 statement ends with a semicolon
test.py:6:18: E225 missing whitespace around operator
'
'
'

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

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

pip install yapf black autopep8

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

Autopep8

Autopep8 Как и его имя, он автоматически форматирует код Python, чтобы соответствовать руководству в стиле PEP-8. Простой практический подход Autopep8 широко рассматривается за его гибкость и настройку. Чтобы исправить свой файл, используйте следующую команду.

autopep8 -i -v test.py

-i или --в-месте Флаг вносит изменения в файлы на месте, и -v или --вербоз для словесных сообщений.

Выход:

Посмотри на это, намного лучше! Но подождите, есть еще. Хорошая вещь о Autopep8 это, это также допускает агрессивные изменения. С помощью -a или -Аггрессии флаг, Autopep8 Агрессивно форматирует код, позволяя не взволнованные изменения. Посмотрим на это в действии, не так ли?

autopep8 -i -v -a test.py

Выход:

Ясно, что так много изменилось, это показывает, насколько гибко auotpep8 На самом деле, но есть еще больше.

Укладывая несколько -a ,

autopep8 -i -v -a -a -a test.py

Еще более агрессивные изменения могут быть принуждены. После использования агрессивного флага несколько раз, это то, как выглядит файл.

Выход:

3 Уровень агрессивных изменений, по моему мнению, немного излишне и решает большинство целей.

Япф

Yapf Это проект Google-довольно продвинутый инструмент автоматического вформатирования, который может даже украсить код, который следует за рекомендациями PEP-8, чтобы сделать его еще лучше. Подход похож на Clang и GOFMT , чтобы автоматически вформировать файл, используйте следующую команду:

yapf -i -vv test.py

-i или --в-месте Флаг вносит изменения в файлы на месте, и -VV или --вербоз для словесных сообщений.

yapf Позволяет форматировать код в соответствии с руководящими принципами Google и Facebook; с помощью стиль Google или стиль Facebook Сценарии могут быть переформатированы в соответствии с предписанными руководящими принципами стиля.

yapf -i -vv test.py style google

Чернить

Черный является наиболее любимым и/или наиболее ненавистным форматированием (в зависимости от того, как вы на него смотрите), действительно бескомпромиссный форматер, рефакторирующий код в его мельчайшие детали, черные приводят к более быстрому, более оптимизированному коду. Его бескомпромиссная природа может привести к сценариям, совершенно отличным от оригинальных, и много раз считается переполнением. Чтобы использовать черный, используйте команду:

black test.py

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

Возвращаясь к моему раннему заявлению, Черный является наиболее любимым и/или наиболее ненавистным форматером , как? Черный обеспечивает почти Нет и под этим я имею в виду никакой настройки; Это действительно бескомпромиссно. Существуют определенно вещи, которые можно изменить, но тот факт, что черный – это простой неконфигурированный инструмент, все еще относится. Общий аргумент заключается в том, что «лучшие инструменты не нужны каких -либо конфигураций»; Это может быть верно для GOFMT (аналогичный инструмент автоформатирования для GO) Но Python не идет. Многие люди все еще любят использовать Черный Анкет «Черный самоуверен, поэтому вам не нужно быть». Сумма все довольно хорошо.

Другие инструменты, такие как Autopep8 и yapf Предоставьте гораздо больше конфигураций и настройки, но эта часть выходит за рамки этой статьи.

Почему нет автоформада?

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

Мой последний взгляд

Черный В Япф и Autopep8 некоторые отличные инструменты, но лично, Autopep8 Мой автоматический форматер с Flake8 Linter (Что такое Линтер? Подождите мой следующий блог, может быть: P) и Трэвис Для тестовых случаев и непрерывной интеграции.

Нижняя линия:

Инструменты автоматического формата, такие как Япф , Autopep8 и черный просто Параметры, а не решения Анкет В конечном счете, вы должны стремиться изучить руководящие принципы самостоятельно, так как они являются сердцем и душой Python. Если вы вносите свой вклад в проекты с открытым исходным кодом, такие инструменты очень помогают. Каждый сопровождающий любит хороший чистый код. Всегда помни, Недостаточно кода, если хотите, если хотите, Поэтому, если вы хотите быстро пойти, если вы хотите быстро сделать, если вы хотите, чтобы ваш код был легко писать, облегчить чтение.

Как я уже говорил ранее, Я также планирую сделать шпаргалку для этого и в ближайшее время, следите за обновлениями.

Понравилось то, что вы читали? Я возобновил ведение блога через долгое время; Я говорю о нескольких вещах (футбол, аниме, IoT, музыка, человеческие эмоции, и многие другие). Вы можете следовать за мной в моих социальных сетях, если хотите.

  • Пусть подключиться; Я люблю связываться с людьми, у которых похожий мышление, мой LinkedIn Анкет
  • Для Эксклюзивные технические сообщения , проверьте мой Dev Profile Анкет
  • Пройти через мой GitHub , вы можете найти что -нибудь интересное.

Vybhav chaturvedi , Конец связи.

Оригинал: “https://dev.to/vybhav/beginners-guide-to-auto-formatting-1hpp”