Обновить
0
0

Пользователь

Отправить сообщение

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

А ещё вопрос. что если нам понадобится получить все кадры с камер на втором этаже, к какому репозиторию будет относится метод получения таких данных?

Почему используется старый вариант типизации с List, Optional, Dict и прочим, вместо list | dict?

Так же не понятно зачем в возвращаемых типах указывать имя класса в кавычках

Действительно ли в питоне нужны классы фабрики? Почему не обойтись функцией, если прям будет нужда

Спасибо за развёрнутый ответ.

(5) comprehensions, на мой взгляд, очень удобны в использовании и лаконичны, даже в вашем примере, читается естественно

[ проблема для проблемы из списка проблем если состояние проблемы = открыто]

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

(7) init не то что бы прячется, он есть, и ничего не мешает его реализовать в своём датаклассе, просто зачем тогда использовать датакласс

(8) с помощью yield в асинхронщине можно сделать батчевую/порционную выгрузку откуда то и завернуть это в итоге в красивый async for. или сделать контекстный менеджер для async with или просто with. тут точно не понимаю какая здесь архитектурная проблема

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

(10) на сколько знаю, гил был нужен для удобства разработки бибиотек и потокобезопасности, но не эксперт

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

Тут же всё зависит от реализации hash дандер метода, который может (и действительно) не зависеть от наличия\отсутствия аттрибутов класса или экземпляра
Нашел что по дефолту хэш в классах считается как id(a) // 16

class A:
    pass

a = A()

hash(a)  #     144368393563
id(a) // 16  # 144368393563

И т.к. при изменении аттрибутов, id не меняется, хэш остаётся тот же

А какие именно вопросы? Я, максимум, мог бы только про третий вопрос так сказать.

Ну фласк ещё вполне можно встретить на проектах, новое думаю не пишут, но легаси есть :) согласен, что было бы лучше просто про фастапи этот блок выделить

по джанге можно и отдельные книги посмотреть. я с джангой не работаю, поэтому считаю алхимию наоборот лучшим выбором


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

какая именно половина книги, по вашему, вода? судя по оглавлению, хорошая обзорная книга по бэку на питоне для начинающих. с низов до раскатки в докере и кубах. что не так?

почему, по вашему, одни из основных фреймворков для бэка на питоне не подходят для книги "Программирование бэкенда на Python"? я бы ещё мог согласиться про основы питона, но что не так с фреймворками

Спасибо за статью!
Разве сабинтерпретаторы не потеряют актуальность с free-threads? как минимум общая область видимости/память, без необходимости сериализации данных между потоками

Точно, спасибо! Пробовал передать зависимость вручную, но передавал не именованным аргументом - поэтому не получилось.

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

Спасибо за статью, было интересно.
Подскажите, как в случае с inject подменять зависимость в рантайме для тестов? или просто вызывать от-декорированную функцию с иной зависимостью?

Не понял в чём разница плохого варианта от хорошего в 7 совете. Созданием двух циклов?

Но в свою очередь, мы исключаем возможность обращения к ресурсу (БД, стороннему API) "одновременно" (асинхронно) несколькими пользователями, когда кэш пустой. Первый обратившийся - пойдёт за ресурсом, остальные - дождутся получения ресурса первым и потом получат его быстро из кэша.

Когда данные в кэше уже будут, получение из него и с блокировкой, и без блокировки будет последовательным (под капотом), т.к. асинхронщина. Ток накинутся расходы за игры с lock-ом.

Поправьте если ошибся :)

Так же не для рекламы. В настоящий момент прохожу указанный курс. Для "пощупать/покрутить" - очень здорово. Но именно для начала, всё же поверхностно некоторые вопросы проходятся.

День добрый. Можно отредактировать файл /lib/systemd/system/docker.service, заменив параметр ExecStart следующей строкой:
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 $DOCKER_OPTS
и перезапустить сервис докера (systemctl daemon-reload и service docker restart)
Тогда у Вас появится возможность стучать в API-шку Вашего серверного докера, а сам проект запускать в… докере. Ну, как возможный вариант.

На самом сайте можно просмотреть подробности каждого "испытуемого". В частности, Торнадо с 6 строчки использует uvloop. Тогда как Торнадо с 27 строчки его не использует (или он не указан) и указан pypy2, вместо py3 с 6 строчки. Разные тесты и компоненты.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Средний
От 370 000 ₽
Git
Linux
Python
SQL
PostgreSQL
Docker
ООП
Redis