Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Чтобы заполнить пустоту на канале, напишу анонсы на предыдущие статьи.

Виртуальные окружения в Python

Это очень важная тема, но для начинающих разработчиков её довольно сложно принять и осознать, а порой проще вообще игнорировать (так было со мной, например). А со стороны более опытного разработчика её сложно объяснять. Много нюансов. Поэтому решил пилотную статью в блог написать именно об этом.

Пишите комментарии, они классные (с авторизацией через GitHub)!
Это прям я раньше и виртуальные окружения. Но нет, они никуда не делись.
Ещё один пост был про requirements.txt.

requirements.txt — что это и зачем?

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

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

pipenv — как pip, только удобнее
А как вы управляете зависимостями в своих проектах?
Anonymous Poll
59%
только pip, только хардкор
18%
pipenv
24%
poetry
0%
pip-tools
6%
pyflow
0%
hatch
12%
другое
pyenv — это отличный инструмент для установки любых версий любого интерпретатора Python. Можно установить как древний CPython 2.1.3 (вышел 18 лет назад 😱), так и ультрасовременный 3.9.0, который выйдет только через полгода. А ещё pyenv умеет устанавливать альтернативные интерпретаторы Python. И умеет удобно переключаться между версиями. Классная вещь.

Установка нескольких версий Python параллельно при помощи pyenv
Раз уж я начал писать про менеджеры версий, то нельзя обойти стороной универсальный менеджер версий — asdf. Этот инструмент будет полезен не только для питонистов, но и в целом для людей, которые сталкиваются с задачей управления версиями своего любимого языка программирования. Может быть вы пишете на Node.js, Rust, Kotlin или Go? А может быть на всём этом сразу? asdf умеет управлять версиями всех этих языков и ещё кучей всего!

На самом деле, именно asdf я и пользуюсь в своей повседневной работе вместо pyenv. Сейчас через него я управляю только версиями Python и Node.js, но если мне захочется освоить другой язык, то я уже знаю, как я буду его устанавливать 😊

Управление версиями чего угодно при помощи asdf
Линтер — это прям незаменимый инструмент, когда программируешь на Python. Даже не могу представить, сколько ошибок линтеры помогли мне отловить, сколько сеансов мучительного дебага я избежал, сколько часов на код-ревью сэкономлено.

Постарался в статье подробно рассмотреть как пользоваться двумя самыми популярными линтерами для Python — flake8 и pylint.

Линтеры в Python
Тема немного оффтопик, но я в восторге от choco — пакетного менеджера для Windows! Больше никогда не буду устанавливать программы через "поставить галочку под лицензией", "далее", "далее", "далее", "готово".

https://semakin.dev/2020/05/chocolatey/
Написал про забавный трюк, который в простых случаях позволяет использовать print как функцию в Python 2 (ну, на самом деле нет, но выглядит именно так).

https://semakin.dev/2020/05/python2_print/
Форматтер кода — ещё один, на мой взгляд, незаменимый в работе инструмент. Проект black в последнее время быстро набирает популярность — многие проекты берует его к себе на вооружение.

Это правда очень круто, когда вся кодовая база проекта абсолютно одинаково отформатирована. Глаз не отвлекается на всякие мелочи, код воспринимается легко. И для этого даже почти ничего не нужно делать!

https://semakin.dev/2020/05/black/
Одумойтес

#meme
Git-хуки — это невероятно мощный и полезный инструмент, который, как мне кажется, часто игнорируют и недооценивают.

Написал пост про Git-хуки в целом и про инструмент pre-commit, который упрощает работу с ними. Если ещё не пользуетесь, то наверняка будет полезно, на каком языке бы вы ни писали!

https://semakin.dev/2020/05/pre-commit/

#git
StackOverflow опубликовали результаты ежегодного опроса среди разработчиков за 2020 год.

Из интересного:
* Python является четвертым по популярности языком программирования (а если не учитывать HTML и SQL — это ж язык разметки и язык запросов, то вообще второй);
* TypeScript сместил Python на третье место в рейтинге "Most Loved";
* Python до сих пор держит первое месте в рейтинге "Most Wanted".

https://insights.stackoverflow.com/survey/2020
Часто замечаю, что люди забывают ставить символы переноса строки в конце текстовых файлов (будь то исходники Python, SQL или просто TXT-файл). А это важная деталь, её отсутствие нарушает основопологающие стандарты разработки ПО и заставляет многие утилиты Unix сходить с ума.

https://semakin.dev/2020/05/no_newline_at_end_of_file/
Кстати, раз уж затронули тему опросов и исследований, то JetBrains тоже недавно опубликовали результаты своего исследования среди Python-разработчиков.

Интересное:
* Python часто используют совместно с JavaScript, Bash, HTML/CSS и SQL;
* основными областями применения Python остаются анализ данных, веб-разработка, машинное обучение и DevOps;
* Python 2 уже почти не используется (10%), а Python 3.7 является самой популярной версией среди 3.x.

https://www.jetbrains.com/lp/python-developers-survey-2019/

#jetbrains