zen_of_python | Unsorted

Telegram-канал zen_of_python - Zen of Python

20145

Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

Subscribe to a channel

Zen of Python

dayplot | Симпатичные хитмэпы

Библиотека позволяет строить тепловые карты а-ля GitHub Contributions. В одной статье забавно визуализировали с dayplot, как у Илона Маска е̶д̶е̶т̶ ̶к̶у̶к̶у̶х̶а̶, как растет число постов в X (ex-Twitter).

Проект на PyPi
#инструмент
@zen_of_python

Читать полностью…

Zen of Python

Когда навайбкодил приложение в СhatGPT и уже подсчитываешь миллионы своего стартапа.

То самое приложение:

Читать полностью…

Zen of Python

#кек

@zen_of_python

Читать полностью…

Zen of Python

airflow-ai-sdk | Оркестрация на откуп GPT

Этот репозиторий позволяет создавать DAG в Airflow и управлять таковыми с помощью ИИ-ассистентов на ваш выбор (хоть ChatGPT, хоть Claude).

Админ ликует, ведь Airflow без должной информационной поддержки легк становится той еще занозой.

Репозиторий проекта
#инструмент
@zen_of_python

Читать полностью…

Zen of Python

Квиз про качество кода в Python

Небольшая англоязычная викторина на 13 вопросов, посвященная читаемости, переиспользованию, масштабируемости и другим параметрам качества. Подготовиться можно с помощью статьи.

#квиз
@zen_of_python

Читать полностью…

Zen of Python

5 игр, чтобы подучить SQL (и не уснуть по дороге)

SQLPD — расследуете преступления как аналитик SQL-полиции. Каждое задание — отдельное дело.

SQL Island — выживаете после крушения на острове, выполняя SQL-задачи, чтобы выбраться.

SQL Murder Mystery — ищете убийцу в базе данных. Свобода действий и минимум подсказок.

Lost at SQL — спасаете подлодку и команду, проходя сюжетные SQL-челленджи.

SQL Squid Game Решаете задачи по мотивам игры в кальмара, чтобы не повторить судьбу коллеги-аналитика.

#игры #sql

Читать полностью…

Zen of Python

stealthkit | requests на стероидах

Инструментарий для скрытого доступа и обхода систем безопасности. Среди фичей:

Ротация User-Agent: Автоматически меняет user-agent из Chrome, Edge и Safari на различных операционных системах (Windows, MacOS, Linux);
Случайный выбор Referer: Симулирует реальное поведение браузинга, отправляя запросы с рандомизированными referer'ами из поисковых систем;
Обработка куки: Извлекает и сохраняет куки с указанных URL для поддержания постоянства сессии;
— Поддержка прокси: Позволяет маршрутизировать запросы через предоставленный прокси;
Логика повторных попыток: Повторяет неудачные запросы до трех раз перед тем, как сдаться;
RESTful запросы: Поддерживает GET, POST, PUT и DELETE с автоматической интеграцией прокси.

Репозиторий проекта

#инструмент

@zen_of_python

Читать полностью…

Zen of Python

«Чем ближе к вокзалу, тем хуже кебаб»

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

#кек

@zen_of_python

Читать полностью…

Zen of Python

* Непереводимая игра слов *

#кек

@zen_of_python

Читать полностью…

Zen of Python

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

Было очень непросто определить победителя прошлого такого интерактива, но это @maxim_ag и @levisserena.

#кек 

@zen_of_python

Читать полностью…

Zen of Python

Вопросы подписчиков

Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:

— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;

#вопросы_новичков

@zen_of_python

Читать полностью…

Zen of Python

mpl_ascii | Графики на ASCII

Если вы вынуждены работать со средой без картинок, эта библиотека позволяет рендерить сложные чарты Matplotlib целиком из символов. Старший брат ASCII-графики, которую мы все так любим.

Цена: бесплатно
Репозиторий проекта

#инструмент

@zen_of_python

Читать полностью…

Zen of Python

Квиз про while

Небольшая англоязычная викторина на 11 вопросов про цикл «пока [условие выполняется]». Самое оно для подготовки к собеседованию или раскачке новичка.

Подготовиться к тесту можно с помощью статьи.

#квиз

@zen_of_python

Читать полностью…

Zen of Python

Как называют разработчика, который перешёл на Python?

ОТСТУПНИК

@ithumor

Читать полностью…

Zen of Python

Помните про ускорение Python на 30%?

Недавно за счет tail-calls оптимизировали C-компилятор, который помогает вашему питоническому коду работать быстрее.

Один весьма кропотливый разработчик задизайнил несколько экспериментов, чтобы оценить этот столь долгожданный прирост производительности. Статья хардкорная и новичкам будет особенным испытанием (впрочем, всегда можно попросить нейронку ее резюмировать / упростить).

Хоть в рамках его опытов производительность увеличилась на 10-15%, и была двойственность в интерпретации результатов, он все равно настаивает на повышенной надежности нового C-компилятора.

#факт

@zen_of_python

Читать полностью…

Zen of Python

#кек
@zen_of_python

Читать полностью…

Zen of Python

Сравниваем Pandas, Polars и PySpark: что выбрать аналитику?

В Tproger сравнили три популярных библиотеки: Pandas, Polars и PySpark. В статье вы узнаете про производительность, удобство использования и возможности работы с большими наборами каждой из них.

#факт

@zen_of_python

Читать полностью…

Zen of Python

Вышел Django 5.2

В этом релизе представлены следующие ключевые нововведения:​
— Автоматический импорт всех моделей в оболочке Django;
— Поддержка составных первичных ключей с использованием django.db.models.CompositePrimaryKey;
— Упрощенное переопределение BoundField на уровне формы, поля или проекта.​

Про CompositePrimaryKey

CompositePrimaryKey позволяет создавать первичные ключи, состоящие из нескольких полей, что особенно полезно при моделировании связей многие-ко-многим.​


from django.db import models

class Product(models.Model):
name = models.CharField(max_length=100)

class Order(models.Model):
reference = models.CharField(max_length=20, primary_key=True)

class OrderLineItem(models.Model):
pk = models.CompositePrimaryKey("product_id", "order_id")
product = models.ForeignKey(Product, on_delete=models.CASCADE)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
quantity = models.IntegerField()


В этом примере модель OrderLineItem использует составной первичный ключ, состоящий из полей product_id и order_id. Это гарантирует уникальность каждой комбинации продукта и заказа. Ранее для достижения подобного поведения приходилось использовать дополнительные настройки или сторонние библиотеки. ​

#django #факт
@zen_of_python

Читать полностью…

Zen of Python

Как обойтись без requirements.txt для скрипта-одиночки, или чем хорош uv

Стандарт PEP 723 и менеджер зависимостей uv упростили обращение со скриптами-одиночками. Теперь мы можем встраивать метаданные о зависимостях прямо в скрипты, что устраняет необходимость в requirements.txt или менеджерах пакетов.

Рассмотрим на простом примере скрипта wordlookup.py. Он извлекает определения слов из API словаря. Этот скрипт использует библиотеку httpx для выполнения асинхронных запросов. Вот как выглядит основной код:

import argparse
import asyncio
import json
import os
import textwrap
import httpx

async def fetch_word_data(word: str) -> list:
"""Получает данные слова из API словаря."""
url = f"https://api.dictionaryapi.dev/api/v2/entries/en/{word}"
async with httpx.AsyncClient() as client:
response = await client.get(url)
response.raise_for_status()
return response.json()

async def main(word: str):
"""Получает и выводит определения для данного слова."""
data = await fetch_word_data(word)
if data:
print(f"Определения для '{word}':")
for entry in data:
for meaning in entry.get("meanings", []):
part_of_speech = meaning.get("partOfSpeech")
definitions = meaning.get("definitions", [])
if part_of_speech and definitions:
print(f"\n{part_of_speech}:")
for definition_data in definitions:
definition = definition_data.get("definition")
if definition:
print(f"- {definition}")

if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Получить определения слова.")
parser.add_argument("word", type=str, help="Слово для поиска.")
args = parser.parse_args()
asyncio.run(main(args.word))

Чтобы добавить зависимость httpx в наш скрипт, мы можем использовать команду uv:

uv add --script wordlookup.py httpx

После выполнения этой команды в верхней части скрипта будут добавлены метаданные о зависимостях, что позволит uv автоматически управлять установкой необходимых библиотек при запуске скрипта.

Запускаем скрипт:

uv run wordlookup.py <слово>

При первом запуске uv создаст изолированную виртуальную среду и установит все необходимые зависимости. В дальнейшем uv будет использовать уже созданную среду.

#факт
@zen_of_python

Читать полностью…

Zen of Python

Как понять партиционирование: DWH для гуманитариев

На Tproger объяснили различные типы партиционирования — диапазонное, списковое и хешевое с примерами применения. Если вы подступились к действительно объемным базам, или просто столкнулись с постфиксом _* в BigQuery или других подобных продуктах, статья поможет разобраться.

#основы #sql

@zen_of_python

Читать полностью…

Zen of Python

Вопрос подписчика

Задает @Chellbas:

«Меня вот интересует следующая тема, я с ней столкнулся когда придумал тему и распределил логику для моего нового проекта, все этапы прошёл и подошёл к моменту выбора технологий для бекенд части, выбор пал между FastAPI и DRF, FastAPI я на данный момент использую на работе, и подумывал для разнообразия использовать DRF, и вот мы непосредственно подошли к вопросу, как используя экосистему DRF, сделать инную архитектуру, например - луковую, DDD и прочие, но Django нам навязывает же буквально Featute архитектуру, где границы приложения разбиты по модулям через команду startapp, а если писать проект на нем без этой команды, вручную настраивая все, не получается запустить и поднять сервер, как минимум из-за того что конфигурационный файл не может правильно все распределить и получается используя django мы заручники отдой архитектуры, зачастую монолитной, хотел бы услышать советы и указание что делать, возможно я как то не понимаю, очень интересно было бы послушать советы, заранее спасибо!»

#обсуждение

@zen_of_python

Читать полностью…

Zen of Python

stumpy | ищем аномалии в Time Series

Редкое, но очень занимательное представление временных рядов — матрица (на GIF). Библиотека упрощает поиск нестандартных значений с помощью такого dataviz. Также сможет найти для вас Shapelet — кусочек выборки, типичный паттерн выборки. Поддерживает сравнение выборок.

Цена: бесплатно
Репозиторий проекта

#инструмент

@zen_of_python

Читать полностью…

Zen of Python

#кек

@zen_of_python

Читать полностью…

Zen of Python

Два дня, которые перевернут ваш взгляд на ИИ и данные

Если вы хотите понимать, как работают современные рекомендательные системы, как они удерживают пользователей и увеличивают продажи — вам на Data Fusion 2025! Это та самая конференция, где топовые лидеры говорят о реальных кейсах внедрения ИИ и данных.

Регистрация скоро закроется, и у вас последний шанс попасть на ключевое событие весны в сфере ИИ и LLM!

Вас ждет более 70 сессий, включая мощный технический трек с кейс-стади. Один из ключевых блоков — сессия о рекомендательных системах, где опытные DS-специалисты из Lamoda, Wildberries, SberTech и других ведущих компаний рынка поделятся рабочими решениями.

А еще в программе – RAG, CV, NLP и другие ключевые направления в работе с данными и машинным обучением.

Не пропустите — два дня и 250+ спикеров.

16–17 апреля, Технопарк «Ломоносов», Москва. Часы тикают — регистрация вот-вот закроется https://data-fusion.ru/

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

Это #партнёрский пост


*LLM — большая языковая модель (Large Language Model)
*DS — наука о данных (Data Science)
*RAG — генерация с подключением к поиску (Retrieval-Augmented Generation)
*CV — компьютерное зрение (Computer Vision)
*NLP — методы обработки естественного языка

Читать полностью…

Zen of Python

Вопросы подписчиков

Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:

— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;

#вопросы_новичков

@zen_of_python

Читать полностью…

Zen of Python

PEP 751 принят: Python получит стандартный lock-файл для точной установки зависимостей

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

Существующие решения — pip freeze, pip-tools, Poetry, PDM, uv используют разные форматы, не совместимые друг с другом и требуют отдельной логики от инструментов и пользователей. Новый стандарт должен устранить эту фрагментацию.

#факт

@zen_of_python

Читать полностью…

Zen of Python

Готовимся к собесу

В репозитории собрали вопросы + ответы оптимального объема на русском для собеседований:

Основы Python: Вопросы о синтаксисе, типах данных, управлении потоком и функциях.
Структуры данных: Вопросы о списках, кортежах, множествах и словарях.
ООП (Объектно-Ориентированное Программирование): Вопросы о классах, наследовании и полиморфизме.
Исключения и обработка ошибок: Вопросы о том, как обрабатывать исключения и создавать собственные исключения.
Модули и пакеты: Вопросы о работе с модулями, импортом и созданием пакетов.
Алгоритмы и структуры данных: Вопросы о сортировке, поиске и других алгоритмах.

#основы

@zen_of_python

Читать полностью…

Zen of Python

Вопрос подписчика

Задает @levisserena:

Всем привет. Помогите разобраться с TypeVar
Один из соразработчиков указал что-то типа того (упрощу, но не всё, чтоб картина была):



from typing import TypeVar
from uuid import UUID

from sqlalchemy.ext.asyncio import AsyncSession

ModelType = TypeVar('ModelType')


class CRUDBase(Generic[ModelType]):


def __init__(self, model: Type[ModelType]):
"""
Инициализирует CRUD-класс с указанной моделью.

Параметры:
model: SQLAlchemy-модель (класс), связанный с таблицей в БД.
"""
self.model = model

async def get(self, session: AsyncSession, obj_id: int | str | UUID) -> ModelType | None:
"""
Получает объект по ID (int, str или UUID).

Возвращает объект модели или None, если он не найден.
"""
result = await session.execute(select(self.model).where(self.model.id == obj_id))
return result.scalars().first()


Вопрос к строке result = await session.execute(select(self.model).where(self.model.id == obj_id)), а точнее к self.model.id.

Линтер подчеркивает это
self.model.id, мол нет у него атрибута id ("type[ModelType]" has no attribute "id").

Как быть? Есть ли способ, обойтись малой кровью, и указать, что id или любой другой атрибут есть? Ну или как это делать по правильному.

NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике.

#обсуждение

@zen_of_python

Читать полностью…

Zen of Python

1 апреля в этом канале розыгрышей не будет

Редакция просто оставляет вам здесь подборку Pythonic-мемов, которые подписчики щедрее всего одарили лайками за последнее время.

Чистое наслаждение настоящего питониста

#кек

@zen_of_python

Читать полностью…

Zen of Python

tach | Древо зависимостей проекта наглядно

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

Воистину прекрасный способ познать свой проект на глубинном уровне и предотвратить проблемы при сборке в будущем. Быстродейственный, потому что на Rust.

Цена: бесплатно
Репозиторий проекта

⚡ — бывало, лазил так глубоко
🗿 — если проект с GitHub не собирается, просто ищу следующий

#инструмент

@zen_of_python

Читать полностью…
Subscribe to a channel