Zen of Python
20.1K subscribers
1.29K photos
178 videos
36 files
3.3K links
Полный Дзен Пайтона в одном канале

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
alive-progress | Шкала прогресса в CLI

Библиотека, предназначенная для создания динамичных индикаторов прогресса в CLI. Среди фичей:
— плавная анимация спиннера;
— точный расчет оставшегося времени с использованием алгоритма экспоненциального сглаживания;
— хуки для логирования.

#инструмент #dataviz
@zen_of_python
1👏1😱1
​​python-dateutil | datetime, который смог

Ультрапопулярное (если верить рейтингу PyPi) расширение стандартного модуля datetime, поддерживает:

— Вычисление «следующего X»: удобно находим даты следующего понедельника или последней недели месяца;
— Относительные дельты: вычисляем разницу между двумя датами не только в секундах, но и в понятных календарных единицах (например, «2 месяца и 5 дней»);
— Рекуррентные даты (повторяющиеся события)
Поддерживается генерация серий дат по очень гибким правилам, расширяющим стандарт iCalendar (например: «каждый второй вторник месяца до конца года») и многое другое.

Еще бы русский язык поддерживала, цены бы не было!

#инструмент
@zen_of_python
​​YTSage | Скачиватель с YouTube

Инструмент с несложным GUI на PySide6 c yt-dlp под капотом. Позволяет выбрать HD-качество, извлечь субтитры. Поддерживает скачивание плейлистов с возможностью выбрать конкретные видео перед загрузкой.

#инструмент
@zen_of_python
This media is not supported in your browser
VIEW IN TELEGRAM
Cruft | Бойлерплейт из вашего проекта

Инструмент, который позволяет вам создать свой шаблон из уже существующего проекта, и потом поддерживать его. Основан на CookieCutter — аналогичной CLI-утилите. После создания можно использовать команду cruft update, чтобы подтягивать изменения из шаблона по мере его развития. Инструмент умеет проверять, актуален ли проект относительно шаблона, и позволяет автоматически применять обновления через CI-конвейеры. Это отличный способ избежать дублирования кода и облегчить поддержку множества проектов, основанных на одном шаблоне.

#инструмент
@zen_of_python
11
​​Starplot | Визуализируем звездное небо

Пожалуй, самая романтичная библиотека за последнее время в канале...

Тул для создания карт неба умеет строить разные типы визуализаций:

— Zenith Plots (вид всего неба над головой в заданное время и месте);
— Horizon Plots (небо над горизонтом);
— Map Plots с различными проекциями;
— Optic Plots — имитацию вида через телескоп или другое оптическое устройство.

Поддерживается более 14К объектов — звёзд, планет, созвездий и проч.

#инструмент
@zen_of_python
❤‍🔥5🌚1
self: простейшее объяснение

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


self — это ссылка на объект

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


class Employee:
def set_salary(self, value):
self.salary = value

e = Employee()
e.set_salary(2000)
print(e.salary)


Когда вы создаёте объект, Python автоматически передаёт этот объект первым аргументом в метод. Принято называть его self, хотя технически вы можете использовать любое имя.

🔘 Создаётся класс Employee с методом set_salary. Этот метод принимает два аргумента:
— self — сам объект;
— value — значение, которое мы хотим установить.

🔘 Внутри метода выполняется присваивание:


self.salary = value


Это значит, что у конкретного объекта e создаётся атрибут salary, которому присваивается переданное значение.

🔘 Далее создаём объект:


e = Employee()


🔘 Устанавливаем зарплату:


e.set_salary(2000)


На самом деле Python преобразует этот вызов в:

Employee.set_salary(e, 2000)


🔘 Проверяем результат:


print(e.salary) # 2000



Почему без self не обойтись?

self позволяет объекту хранить собственные данные. Каждый экземпляр класса имеет свой набор атрибутов, и именно через self мы к ним обращаемся.

Например, если создать двух сотрудников:


e1 = Employee()
e2 = Employee()

e1.set_salary(2000)
e2.set_salary(3000)

print(e1.salary) # 2000
print(e2.salary) # 3000


У каждого объекта будет своя зарплата.

#инструмент
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
​​Bazel | Сборка и тестирование, как в FAANG

Опенсорсная версия внутреннего инструмента Google, которая делает процесс сборки эффективнее:
— Дает пересобрать только те участки кода, где были изменения (Incremental Builds);
— Позволяет сдруживать Python-код с другими ЯП;
— Дружит с CI / CD;
— Поддерживается на популярных ОС: Windows, Linux, macOS.

#инструмент
@zen_of_python
1🌭1
This media is not supported in your browser
VIEW IN TELEGRAM
memory_graph | Визуализация кода

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

С помощью графов можно визуализировать взаимосвязи между объектами, что они содержат и как меняются во времени. Удобен как для студентов и начинающих программистов, так и для тех, кто хочет глубже осознать, как Python работает «под капотом».

Модуль можно использовать даже в ноутбуках.

#инструмент
@zen_of_python
👏6
​​typing-extensions | Машинка времени для фичей ЯП

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

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

#инструмент
@zen_of_python
1
​​django-silk | Профилирование HTTP- и SQL-запросов

Инструмент «перехватывает» запросы и ответы, собирая детальную статистику:
— длительность выполнения;
— заголовки, тела запросов / ответов;
— таблицы-источники.

Также поддерживаются ручное профилирование блоков кода через декораторы и контекстные менеджеры, динамическое профилирование функций. Хороший способ найти узкие места производительности в вашем Django-проекте.

#инструмент
@zen_of_python
👍2🙈1
Нестандартные интерфейсы на Python: как вставить кнопки, как на пульте ТВ?

А что если ваш UI должен содержать кнопки нестандартной формы? Как на пульте ТВ / игровом джойстике, к примеру. Tkinter, к примеру, такое не умеет.

Один австралийский разработчик решил эту задачу, написав библиотеку GIMPy-Widget-UI. Библиотека позволяет проектировать в графическом редакторе такие нестандартные элементы и делать их интерактивными с минимальным объёмом кода.

#инструмент
@zen_of_python
detroit | Level Up для вашего dataviz'а

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

#инструмент
@zen_of_python
👍21🔥1
​​RunSnakeRun | Профайлер с GUI

Симпатичный и наглядный инструмент для анализа производительности Python-программ. Он показывает результаты профилирования (cProfile, hotshot и других форматов) в виде наглядной treemap-диаграммы.

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

#инструмент
@zen_of_python
7
​​pypiplus.com | Прогнозируем «ад зависимостей»

Утилита позволяет пробить любую библиотеку / фреймворк с pypi.org и узнать, от каких «соседей» она зависит и кто полагается на нее. Если в эпоху ИИ-копайлотов мы все немного превращаемся в системных архитекторов, то с такими сервисами это будет проходить с меньшим количеством последствий, однозначно.

#инструмент
@zen_of_python
This media is not supported in your browser
VIEW IN TELEGRAM
PySCN | Cтатанализ вашего кода

Инструмент оценивает Python-проект по следующим параметрам:
— доля «мертвого» кода;
— задвоение кода;
— связанность классов друг с другом и проч.

В эпоху LLM-копайлотов анализ качества кода все так же актуален, так что сохраняем и пользуемся.

#инструмент
@zen_of_python
7👀1