Zen of Python
20.1K subscribers
1.29K photos
179 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
Придумайте подпись к фото, но так, чтобы это относилось к языку программирования.

Победитель прошлого такого интерактива — @al_yurin.

#кек #обсуждение

@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
Вопрос подписчика

Задает @Chellbas:

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

#обсуждение

@zen_of_python
🤔2🔥1
Вопрос подписчика

Задает @kirillkasparyants1:

«обработка файлов с расширением отличный от .txt»

От админа: если вас интересуют форматы вроде .docx, то почти для каждого из них на PyPi уже есть либа: python-docx, python-pdf и проч.

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

#обсуждение
@zen_of_python
1👍1
Вопрос подписчика

Задает @FieryDruid:

«Генерировал ли кто-нибудь индексы для моделей sqlalchemy в рантайме?

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

Написали генератор, который за нас заполняет __tableargs__ модели

Но из-за такого генератора появилось странное поведение alembic

Теперь, при каждой новой миграции, он в upgrade сначала удаляет все старые индексы, а потом добавляет их же (первая генерация нормальная, но каждая последующая сопровождается такими вот артефактами)

Может кто сталкивался или есть мысли из-за чего такое поведение может быть? Порядок генерируется один и тот же, нейминги, типы и т.д тоже».

#обсуждение
@zen_of_python
👍31
Вопрос подписчика

Задает @Ilia_O_P:

«Есть у кого-нибудь пример метакласса, который запоминал бы изменения в объектах дочерних классов и мог их откатить, при запросе?»

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

#обсуждение
@zen_of_python
🔥2🎃1
​​Вопрос подписчика

Задает @vberia:
«Какие LLM лучше всего пишут/оптимизируют код Python?»

От админа: у нас куплен Cursor (Team) на сразу несколько команд разработки. Ошибки плодит в 99,9% только при недостаточной подаче контекста.

#обсуждение
@zen_of_python
1
​​Вопрос подписчика

Задает @Greatest_Of_AlI_Time:
«Какая книга или пособие на русском языке самое лучшее и понятное для изучения?»

От админа:
— если хочется погрузиться в талмуд, то «Python. Справочник» Мартелли А,
— если хочется карманный справочник, то Лутц М. «Python. Карманный справочник»

#обсуждение
@zen_of_python
❤‍🔥322😁2
Вопрос подписчика

Задает @terisht:
«2 вопроса в одном. Находил ли кто-то либы по архивации файлов на расте для python? И, если такие есть, кто-то мерил насколько они более профитны чем дефолтный zipfile питонячий?»

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

#обсуждение
@zen_of_python
👍1
Вопрос подписчика

Задает @Python3k:
«Что-бы такое интересно покодить? 🤔»

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

От админа: сейчас вам накидают неоплачиваемой работы 😆

#обсуждение
@zen_of_python
4🤗2
Вопрос подписчика

Задает @Jack_Frost13:
«Вопрос по LLM
Какие LLM можно подключить как агента, чтобы он делал работу по инструкции за меня (ML), какие модели лучше всего подойдут для этого и как это организовать?»


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

#обсуждение
@zen_of_python
🤔2
Вопросы подписчиков

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

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

#обсуждение
@zen_of_python
3
This media is not supported in your browser
VIEW IN TELEGRAM
Придумайте подпись к видео так, чтобы это относилось к Python-разработке

#обсуждение
@zen_of_python
😁2👀1
Вопрос подписчика

Задает @StSav012:

«Предлагаю задачку на алгоритм.
Для данных n ∈ ℕ и чётного N ≥ n > 1, N ∈ ℕ, найти чётное ñ, ближайшее к n, являющееся делителем N. Если таких чисел несколько, выбрать наибольшее.Конечно, хочется скорость O(log(n)).


def find_closest_even_divisor(n: int, max_n: int) -> int:
"""
For given n ∈ ℕ and an even N ≥ n, N ∈ ℕ,
find an even ñ closest to n so that ñ is a divisor of N.

If there are several such numbers, pick the largest one.
"""

if max_n <= 0:
raise ValueError(f"There are no positive divisors for {max_n}")
if max_n & 1:
raise ValueError(f"There are no even divisors for {max_n}, which is odd")

if n > 0.75 * max_n:
return max_n

if max_n % n == 0 and n & 1 == 0:
return n

divisors: list[int] = []
dd: int = 1
while max_n > 1 and max_n & 1 == 0:
max_n >>= 1
dd <<= 1
divisors.append(dd)

d: int = 3
dc: list[int]
while max_n > 1:
dc = []
dd = 1
while max_n % d == 0:
max_n //= d
dd *= d
dc.append(dd)
else:
if dc:
divisors += [divisor * dd for divisor in divisors for dd in dc]
if d < isqrt(max_n) and d < 2 * n:
d += 2
else:
break

return min(divisors, key=lambda _d: (abs(n - _d), -_d))

Что ещё можно ускорить?»

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

#обсуждение
@zen_of_python
1