pyenv
— это отличный инструмент для установки любых версий любого интерпретатора Python. Можно установить как древний CPython 2.1.3 (вышел 18 лет назад 😱), так и ультрасовременный 3.9.0, который выйдет только через полгода. А ещё pyenv
умеет устанавливать альтернативные интерпретаторы Python. И умеет удобно переключаться между версиями. Классная вещь.Установка нескольких версий Python параллельно при помощи pyenv
Питонические атаки
Установка нескольких версий Python параллельно при помощи pyenv
Простое управление версиями интерпретатора.
Раз уж я начал писать про менеджеры версий, то нельзя обойти стороной универсальный менеджер версий —
На самом деле, именно
Управление версиями чего угодно при помощи asdf
asdf
. Этот инструмент будет полезен не только для питонистов, но и в целом для людей, которые сталкиваются с задачей управления версиями своего любимого языка программирования. Может быть вы пишете на Node.js, Rust, Kotlin или Go? А может быть на всём этом сразу? asdf
умеет управлять версиями всех этих языков и ещё кучей всего!На самом деле, именно
asdf
я и пользуюсь в своей повседневной работе вместо pyenv
. Сейчас через него я управляю только версиями Python и Node.js, но если мне захочется освоить другой язык, то я уже знаю, как я буду его устанавливать 😊Управление версиями чего угодно при помощи asdf
Питонические атаки
Управление версиями чего угодно при помощи asdf
Простое управление версиями кучи языков программирования и инструментов: Python, Node.js, Ruby, Rust и т.д.
Линтер — это прям незаменимый инструмент, когда программируешь на Python. Даже не могу представить, сколько ошибок линтеры помогли мне отловить, сколько сеансов мучительного дебага я избежал, сколько часов на код-ревью сэкономлено.
Постарался в статье подробно рассмотреть как пользоваться двумя самыми популярными линтерами для Python —
Линтеры в Python
Постарался в статье подробно рассмотреть как пользоваться двумя самыми популярными линтерами для Python —
flake8
и pylint
.Линтеры в Python
Питонические атаки
Линтеры в Python
Обзор популярных статических анализаторов для Python-кода и как они экономят разработчику один день жизни в месяц.
Тема немного оффтопик, но я в восторге от
https://semakin.dev/2020/05/chocolatey/
choco
— пакетного менеджера для Windows! Больше никогда не буду устанавливать программы через "поставить галочку под лицензией", "далее", "далее", "далее", "готово".https://semakin.dev/2020/05/chocolatey/
Питонические атаки
Chocolatey — пакетный менеджер для Windows
Самая важная программа для любителей окошек.
Написал про забавный трюк, который в простых случаях позволяет использовать
https://semakin.dev/2020/05/python2_print/
print
как функцию в Python 2 (ну, на самом деле нет, но выглядит именно так).https://semakin.dev/2020/05/python2_print/
Питонические атаки
Почему print(
Объяснение синтаксического трюка, который позволяет использовать print() как функцию в Python 2 и 3.
Форматтер кода — ещё один, на мой взгляд, незаменимый в работе инструмент. Проект
Это правда очень круто, когда вся кодовая база проекта абсолютно одинаково отформатирована. Глаз не отвлекается на всякие мелочи, код воспринимается легко. И для этого даже почти ничего не нужно делать!
https://semakin.dev/2020/05/black/
black
в последнее время быстро набирает популярность — многие проекты берует его к себе на вооружение.Это правда очень круто, когда вся кодовая база проекта абсолютно одинаково отформатирована. Глаз не отвлекается на всякие мелочи, код воспринимается легко. И для этого даже почти ничего не нужно делать!
https://semakin.dev/2020/05/black/
Питонические атаки
Форматируем код при помощи black
Автоматическое форматирование кода избавляет от бесконечных споров про пробелы, запятые и скобки, экономя нервы и часы код-ревью.
pipenv выпустил долгожданный релиз! Это значит, что проект будет жить!
Обновил статью про
Обновил статью про
pipenv
: https://semakin.dev/2020/04/pipenv/GitHub
GitHub - pypa/pipenv: Python Development Workflow for Humans.
Python Development Workflow for Humans. Contribute to pypa/pipenv development by creating an account on GitHub.
Недавно прошел Pytup (митап по Python), перебазировавшийся в онлайн из-за пандемии. Было две достаточно интересных и хардкорных темы.
Запись доступна здесь: https://youtu.be/tpKs4UVe3Bk
Запись доступна здесь: https://youtu.be/tpKs4UVe3Bk
YouTube
Pytup online / запись трансляции
Описание: Первый Pytup в онлайне — мы постараемся создать ту же самую атмосферу, что была на офлайновых встречах :)
Первым выступит Эмиль Шарифуллин — lead software engineer в «СКБ Контур» (раньше работал в RedHat). Эмиль поделится опытом разработки библиотек…
Первым выступит Эмиль Шарифуллин — lead software engineer в «СКБ Контур» (раньше работал в RedHat). Эмиль поделится опытом разработки библиотек…
Git-хуки — это невероятно мощный и полезный инструмент, который, как мне кажется, часто игнорируют и недооценивают.
Написал пост про Git-хуки в целом и про инструмент
https://semakin.dev/2020/05/pre-commit/
#git
Написал пост про Git-хуки в целом и про инструмент
pre-commit
, который упрощает работу с ними. Если ещё не пользуетесь, то наверняка будет полезно, на каком языке бы вы ни писали!https://semakin.dev/2020/05/pre-commit/
#git
Питонические атаки
Запуск Git-хуков при помощи pre-commit
Git-хуки позволяют автоматизировать запуск различных проверок (линтеры, форматтеры, тесты) при работе с системой контроля версий.
StackOverflow опубликовали результаты ежегодного опроса среди разработчиков за 2020 год.
Из интересного:
* Python является четвертым по популярности языком программирования (а если не учитывать HTML и SQL — это ж язык разметки и язык запросов, то вообще второй);
* TypeScript сместил Python на третье место в рейтинге "Most Loved";
* Python до сих пор держит первое месте в рейтинге "Most Wanted".
https://insights.stackoverflow.com/survey/2020
Из интересного:
* Python является четвертым по популярности языком программирования (а если не учитывать HTML и SQL — это ж язык разметки и язык запросов, то вообще второй);
* TypeScript сместил Python на третье место в рейтинге "Most Loved";
* Python до сих пор держит первое месте в рейтинге "Most Wanted".
https://insights.stackoverflow.com/survey/2020
Stack Overflow
Stack Overflow Developer Survey 2020
Nearly 65,000 took this comprehensive, annual survey of people who code. Demographics. Most loved, dreaded and wanted technologies. Salary and careers.
Часто замечаю, что люди забывают ставить символы переноса строки в конце текстовых файлов (будь то исходники Python, SQL или просто TXT-файл). А это важная деталь, её отсутствие нарушает основопологающие стандарты разработки ПО и заставляет многие утилиты Unix сходить с ума.
https://semakin.dev/2020/05/no_newline_at_end_of_file/
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
Интересное:
* 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
JetBrains: Developer Tools for Professionals and Teams
Python Developers Survey 2019 Results
Official Python Developers Survey 2019 by Python Software Foundation and JetBrains: more than 24k responses from more than 150 countries.
Круто, когда есть инструменты, на которые можно положиться. Круто, когда тайп-чекер через десять файлов и пятнадцать вызовов функций понимает, что ты передаёшь не правильный аргумент, и сообщает тебе об этом. Круто, когда тайп-чекер знает, как правильно пользоваться всеми (ну ладно, не всеми, но многими) внешними библиотеками и не даёт косячить.
Это возможно лишь благодаря аннотациям типов. Ещё круто, что аннотации типов в Python опциональны — хочешь говнякаешь по-быстрому, а хочешь — пишешь на века.
Писать аннотации типов в Python — это очень полезно. Вот, даже пост об этом написал:
https://semakin.dev/2020/06/type_hints/
Это возможно лишь благодаря аннотациям типов. Ещё круто, что аннотации типов в Python опциональны — хочешь говнякаешь по-быстрому, а хочешь — пишешь на века.
Писать аннотации типов в Python — это очень полезно. Вот, даже пост об этом написал:
https://semakin.dev/2020/06/type_hints/
Питонические атаки
Аннотации типов в Python
Введение в тайп-аннотации и тайп-чекинг в Python.
Согласно документации, встроенная функция
В Python 3.10 приняли PEP 618, который добавляет в
Например,
По умолчанию
Ждём Python 3.10!
Ссылки:
* PEP 618: https://www.python.org/dev/peps/pep-0618/
* Документация по
zip()
извлекает по одному элементу из каждой переданной последовательности (или вообще любых итерируемых объектов) и возвращает их все вместе в виде кортежа, делая так до тех пор, пока одна из последовательностей не закончится. Это значит, что конец более длинных последовательностей просто тихо выкидывается и не используется. Поведение абсолютно логичное, существует уже много лет, явно описано в документации, но, к сожалению, оно слишком неочевидное. В ситуации с последовательностями разной длины результат операции может получиться не таким, как ожидается, при этом никаких ошибок не произойдет. Это настолько распространённая проблема, что даже в стандартной библиотеке Python были баги по этому поводу.В Python 3.10 приняли PEP 618, который добавляет в
zip()
аргумент strict
. В режиме zip(..., strict=True)
функция будет контролировать, чтобы все последовательности заканчивались одновременно.Например,
zip([1, 2, 3], [1, 2], strict=True)
зарейзит ошибку ValueError
, потому что переданы списки разной длины.По умолчанию
zip()
сохранит своё старое поведение.Ждём Python 3.10!
Ссылки:
* PEP 618: https://www.python.org/dev/peps/pep-0618/
* Документация по
zip
: https://docs.python.org/3/library/functions.html#zipЗамечаю, что начинающие питонисты часто пишут код примерно вот так:
Написал статейку о том, как правильно обходить словари в Python, если нужны только ключи, только значения, либо и то, и другое одновременно.
https://semakin.dev/2020/07/iterate_over_dict/
for key in dictionary:По сути, ключ словаря нужен в цикле лишь для того, чтобы извлечь значение, и сам по себе никак не используется. Не надо так. Напишем ту же самую программу, избавившись от лишних, незначащих деталей:
print(dictionary[key])
for value in dictionary.values():Так лучше. По заголовку цикла сразу же видно, что использоваться будут только значения словаря.
print(value)
Написал статейку о том, как правильно обходить словари в Python, если нужны только ключи, только значения, либо и то, и другое одновременно.
https://semakin.dev/2020/07/iterate_over_dict/
Питонические атаки
Эффективный обход словарей в цикле в Python
Расскажу как правильно обойти словарь (dict) в цикле, чтобы получить ключи, значения или и ключи, и значения одновременно, при этом не...
Люблю всякие исследования и статистику. JetBrains выкатили результаты исследования экосистемы разработки за 2020 год.
Инфографика: https://www.jetbrains.com/ru-ru/lp/devecosystem-2020/
Пост в блоге: https://blog.jetbrains.com/ru/2020/06/22/the-state-of-developer-ecosystem-2020/
#jetbrains
Инфографика: https://www.jetbrains.com/ru-ru/lp/devecosystem-2020/
Пост в блоге: https://blog.jetbrains.com/ru/2020/06/22/the-state-of-developer-ecosystem-2020/
#jetbrains
JetBrains: Developer Tools for Professionals and Teams
Инфографика «Экосистема разработки в 2020 году»
Результаты четвертого ежегодного исследования экосистемы разработки, в котором приняли участие почти 20 000 респондентов. Узнайте, что происходит в мире программирования в 2020 году: чем живут разработчики, какие языки, технологии и инструменты они используют.
Заблуждения по поводу времени, в которые верят программисты:
* часть 1: https://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time
* часть 2: https://infiniteundo.com/post/25509354022/more-falsehoods-programmers-believe-about-time
* часть 1: https://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time
* часть 2: https://infiniteundo.com/post/25509354022/more-falsehoods-programmers-believe-about-time
Tumblr
Falsehoods programmers believe about time
Over the past couple of years [I have spent a lot of time][checklist] debugging other engineers' test code. This was interesting work, occasionally frustrating but always informative. One might not...
Forwarded from Mikhail Elovskikh
🐍 Онлайн-питап
🏡 Друзья, через неделю мы проводим второй Pytup в онлайне.
⏱ В среду 26 августа в 17:00 Мск поговорим про логгирование, распределенные локи и новости Python.
📆 Участие, как обычно, бесплатное, программа и регистрация на сайте.
🏡 Друзья, через неделю мы проводим второй Pytup в онлайне.
⏱ В среду 26 августа в 17:00 Мск поговорим про логгирование, распределенные локи и новости Python.
📆 Участие, как обычно, бесплатное, программа и регистрация на сайте.
Pytup online
Приглашаем Python-разработчиков (junior, middle, senior) на второй Pytup в онлайне. Вас ждут выступления спикеров из Екатеринбурга и Иннополиса. Обсудим проблемы логирования в Python, способы их решения и подходы к распределённому выполнению кода, который…
В последнее время так мало тематических мероприятий, что грешно пропускать 😫