🐍 Python forever
2 subscribers
52 photos
8 files
36 links
Download Telegram
Forwarded from Senior Python Developer
Сортировка списков

В Python есть два встроенных варианта для сортировки списков — функция sorted() и метод list.sort(). Результат в обоих случаях одинаков, но всё же есть нюансы.

Функция sorted() принимает на вход аргумент в виде списка, а возвращает уже новый отсортированный список. При этом исходный список не изменяется.

Метод sort() в свою очередь применяется к списку, изменяет его непосредственно и ничего не возвращает.
Forwarded from Senior Python Developer
Wget

Наверняка вам не раз приходилось писать методы для какой-то специфической работы с вебом. Но я вас огорчу – вы делали это зря. Ведь уже есть wget. Рекурсивно скачать сайт? Забрать со страницы все изображения? Для wget это не проблема.
Forwarded from Senior Python Developer
🐍🚀 Создаем рекрутинговый портал на Django: часть 3

В заключительной части: создание мессенджера, реализация поиска по профилям и проектам, отзывы и пагинация.

https://proglib.io/sh/XvIgh4P2Ad
Forwarded from Senior Python Developer
🧠 Концепция IP-адресов на примере Python-модуля ipaddress

Рассказываем, как работать с IP-адресами классического протокола IPv4 в теории и на практике – в коде Python. Показываем, как проверить связь между группой IP-адресов и их соответствие подсетям и диапазонам частных IP-адресов.

https://proglib.io/p/koncepciya-ip-adresov-na-primere-python-modulya-ipaddress-2020-08-07
Forwarded from Senior Python Developer
Конвертируем словарь в список в Python

Благодаря следующему примеру кода с картинки мы можем с легкостью преобразовать наш в словарь в список.
Forwarded from Senior Python Developer
Цикл событий в Python

Цикл событий — это ядро для каждого асинхронного приложения. Он нужен для того, что бы запускать асинхронные задачи и функции обратного вызова.

Поговорим теперь о низкоуровневых методах:

get_running_loop — Возвращает текущий цикл событий в потоке. Если его нет, то будет RuntimeError. Может быть вызвана только с корутины или функции обратного вызова.

get_event_loop — Делает тоже самое что и функция выше, но если set_event_loop не был вызван, то в добавок ещё закрепит новый цикл.

new_event_loop — Создает новый цикл событий.

set_event_loop — Устанавливает цикл событий для текущего потока.

Немного о методах для работы с циклами событий:

run_forever — Запускает цикл событий до тех пока stop не будет вызван.

stop — Останавливает цикл событий.

Также есть методы is_closed и is_running для проверки состояния.

Пример можете посмотреть на картинке выше. Много другого полезного вы можете прочитать в документации.
Forwarded from Senior Python Developer
Как узнать о том, что строка включает в себя только пробелы?

Есть метод isspace(), который возвращает True только в том случае, если строка состоит исключительно из пробелов.

Примеры использования метода isspace() рассмотрены на картинке.
Forwarded from Senior Python Developer
Отправляем запросы с HTTPX

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

Сравнивая с привычным requests, у httpx есть следующие преимущества:

— Стандартный синхронный интерфейс, но также есть поддержка асинхронности
— Поддержка HTTP/1.1 и HTTP/2
— Возможность отправлять запросы напрямую к WSGI и ASGI приложениям
— Полная поддержка аннотаций типов
— 100% покрытие тестами

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

Чаще всего обработка входных данных сводится к преобразованию символов в верхний или нижний регистр. Иногда данные можно очистить с помощью регулярного выражения.

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

В примере видим, как символы переноса строки "\n" и табуляции "\t" заменяются на обычные пробелы, а символ "\r" удаляется из строки полностью.
Forwarded from Senior Python Developer
Как работают статические методы

Статические методы создаются в классе при помощи декоратора @staticmethod. Такие методы привязаны к классу, а не объекту — в этом и есть основное отличие.

Такой тип методов не может модифицировать ни объект, ни сам класс. То есть передавать объект или класс и прописывать self или cls в аргументах не нужно.

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

Python хорош тем, что у него много библиотек. Автор рассказывает, зачем нужна Pydantic, чем она лучше marshmallow, как ей пользоваться и как с её помощью правильно проверять данные.

https://youtu.be/_5kCjRj6bng
Forwarded from Senior Python Developer
Логические all и any

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

Функция any возвращает значение True, если хотя бы одно из переданных утверждений верно, all – в случае, если все верны.

В целом эти две функции заслуживают отдельного внимания всего лишь из-за их простоты в использовании.
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. С этой библиотекой можно сделать много полезного, но мы ограничимся одним примером, который используется чаще всего, — нечеткий разбор (парсинг) дат. Документацию пакета можете найти по ссылке.