🐍 Python forever
2 subscribers
52 photos
8 files
36 links
Download Telegram
Forwarded from Senior Python Developer
Упаковка параметров с помощью urlencode

Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:

url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)

Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция urlencode из из модуля urllib.
Forwarded from Senior Python Developer
🐍🚀 Django, Celery и Redis: гайд по работе с асинхронными задачами

Подробная инструкция по интеграции Celery и Redis в проект Django для асинхронной обработки длительных и ресурсоемких задач в фоновом режиме.

https://proglib.io/p/django-celery-i-redis-gayd-po-rabote-s-asinhronnymi-zadachami-2022-08-22
Forwarded from Senior Python Developer
Именование среза с функцией slice

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

Один из вариантов улучшения ситуации заключается в использовании констант для значений, задаваемых индексами. Однако есть и более удачный способ написания качественного кода, как показано на картинке.
Forwarded from Senior Python Developer
Вывод уникального идентификатора переменной

Уникальный идентификатор переменной находится с помощью метода id(). Для этого нужно просто передать в метод имя переменной.

Идентификатор объекта – это целое число, которое гарантированно будет уникальным и постоянным для этого объекта в течение его жизненного цикла.
Forwarded from Senior Python Developer
Отправляем универсальные уведомления

В Python присутствует интересный пакет notifiers, который позволяет отправлять уведомления на почту, через Телеграм бота, в Слэк и еще много куда. Всего доступно 16 провайдеров, подробнее про них в документации.

В функцию get_notifier передаем название провайдера в виде строки и получаем объект, с которым можно работать. Отправить уведомление можно с помощью универсального метода notify.

Если не уверены, какие аргументы нужно передать для отправки уведомления, то можете посмотреть их через атрибут required у созданного объекта.

Например, для Телеграма нужно передать токен бота, айди чата и само сообщение. В случае с почтой необходимо указать логин, пароль, адресата и также сообщение.
Forwarded from Senior Python Developer
Метод str.swapcase()

Возвращает копию строки с измененным регистром. Если символ был в нижнем регистре — он перейдёт в верхний и наоборот. Даже такой редко используемый метод был предусмотрен разработчиками языка :D
Forwarded from Senior Python Developer
Python-dateutil

Пакет предлагает мощные расширения стандартного модуля datetime. С этой библиотекой можно сделать много полезного, но мы ограничимся одним примером, который используется чаще всего, — нечеткий разбор (парсинг) дат. Документацию пакета можете найти по ссылке.
Forwarded from Senior Python Developer
Преобразование списка в словарь

В этом примере мы преобразуем список формата [key_1, value_1, key_2, value_2] в словарь {key_1: value_1, key_2: value_2}.

Пример преобразования представлен на картинке.
Forwarded from Senior Python Developer
Получение срезов итераторов

Если вы попытаетесь получить срез итератора, то столкнётесь с ошибкой TypeError, сообщающей о том, что на объект-генератор нельзя оформить подписку. Однако эта проблема поддаётся решению (см картинку).

Воспользовавшись методом itertools.islice, можно создать объект islice, который представляет собой итератор, выдающий нужные элементы. Однако здесь важно отметить то, что эта конструкция использует все элементы генератора вплоть до начала среза и все элементы в объекте islice.
Forwarded from Senior Python Developer
This media is not supported in your browser
VIEW IN TELEGRAM
tqdm

Отличный инструмент для подключения диаграммы выполнения вашей программы. Название происходит от арабского слова "taqadum", что означает "прогресс".
Для создания прогресс-бара необходим лишь один вызов функции:

from tqdm import tqdm
from tqdm.notebook import tqdm # для использования в Jupyter Notebook

for i in tqdm(range(10000)):
...


На гифке пример прогрессбара. В реальном времени показывается процент выполнения, визуальное представление, сколько итераций завершилось, скорость выполнения и ожидаемое время окончания, а сам модуль не требует никаких внешних библиотек.
Forwarded from Senior Python Developer
Ограничение использования памяти и процессора

Если вместо оптимизации программы вы хотите ограничить используемые ею ресурсы компьютера, можно использовать полезные библиотеки. На картинке показано, как реализовать ограничения процессорного времени и объема используемой памяти.

Для работы с процессором мы сначала получаем значения soft и hard лимитов для ресурса LIMIT_CPU, а затем ставим лимит, используя некоторое число секунд, задаваемое при помощи аргумента seconds, и значение hard лимита. После регистрируется обработчик signal, который начинает процедуру выхода при превышении выделенного нами времени. Для работы с памятью мы также получаем значения hard и soft лимитов, а потом ставим ограничения с помощью метода setrlimit, передавая в него размер ограничения и значение hard лимита.
Forwarded from Senior Python Developer
👨‍💻 Алгоритмы на Python — лекции МФТИ

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

Лекция №1
https://youtu.be/KdZ4HF1SrFs
Лекция №2
https://youtu.be/ZgSx3yH7sJI
Лекция №3
https://youtu.be/b8m9uRMpKJk
Лекция №4
https://youtu.be/DvsCUI5FNnI
Лекция №5
https://youtu.be/3I6OjxoeSS8

Весь плейлист с остальными лекциями: https://youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
Forwarded from Аркадий
по SQL я корчое что бы потренироватьься прорешал все задачки на SQL Academy, на это ушло часа 4 суммарно, там есть пара задач где пришлось подумать

https://sql-academy.org/ru/trainer?sort=byId
Процесс работы с ветками более подробно описан здесь: http://releaseflow.org/.

Общие требования к работе в git:

Любые изменения в исходном коде должны быть связаны с задачами из джиры;
Номер задачи из джиры должен дублироваться в комментарии к коммиту. Так как зачастую после слияния веток невозможно понять, где выполнялись работы;
Для упрощения работы рекомендуется установить локальные хуки (https://github.com/aeroclub-it/infrastructure-githooks). Для их работы требуется установленный python версии 3.X;
Работу с ветками можно осуществлять через скрипты (https://github.com/aeroclub-it/infrastructure-release-scripts). Они подключаются в репозиторий как подмодуль.

Для работы с исходным кодом используются следующие ветки:

master - рабочая, протестированная, стабильная версия. Предназначена для выкладки в прод;
develop - тестовая версия. Предназначена для выкладки в тест;
release/XXX - ветка, предназначенная для сборки релиза. Создается из ветки master, в нее сливаются задачи, которые нужно выпустить в текущем релизе. Все конфликты мерджей решаются здесь же. XXX - номер релиза;
feature/XXX - ветка, предназначенная для выполнения доработок. XXX - номер задачи из джиры;
hotfix/XXX - ветка, предназначенная для исправления багов. XXX - номер задачи из джиры;
создание веток с другими названиями не допускается.
Forwarded from [PYTHON:TODAY]
leetcode_python.pdf
552 KB
✍️ Огромный сборник решений задач leetcode на Python c описанием и кодом

LeetCode
— онлайн-платформа с алгоритмическими задачами по программированию, своего рода тренажёр для подготовки к техническим интервью.

#doc #python #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Anthony
@FastAPI

Очень годный курс по FastAPI

Он включает в себя:

- celery
- redis
- "кеширование"
- middleware
- websocket
- pytest

Я думаю, список будет расширяться, канал новый (несколько месяцев).

Почему я советую посмотреть этот материал всем?

Я считаю, что разработка на FastAPI проще чем на Django

У FastAPI проще документация, скорость выше и тд

Но многих это отталкивало то, что FastAPI новый инструмент (года 2, если не ошибаюсь) и качественного материала в .ru сегменте было мало

Но на этом канале собрана ОЧЕНЬ качественная информация и хорошая подача

Кому советую посмотреть?

Я считаю(имхо), что скорость "вкатывания" в backend разработку через FastAPI будет быстрее чем через Django

В первую очередь, я советую посмотреть этот плейлист тем, кто только выучил синтаксис и собирается писать свой первый пет-проект. Будет проще чем Django (имхо). Вакансий на FastAPI достаточно (35-40% backend на Python)

Если ты уже почти всё выучил(выучила) в Django, в любом случае советую ознакомиться.
Полезно будет 100%. Решение на чём работать сделаешь потом сам(сама)

В общем, советую посмотреть всем Python backend developer-ам!
Смотрится на одном дыхании 🐺🐺🐺
Please open Telegram to view this post
VIEW IN TELEGRAM
Если интервьюер, говорит, что твоё решение не оптимальное, то тебе необходимо сразу отбросить всё что связано с квазилинейной сложностью O(n*logn) - использование сортировки.
Нужно искать линейный алгоритм и забить на сортировку.

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