Telegram Web Link
Делегирующие генераторы

Давайте создадим простенькую генераторную функцию subgen, которая будет возвращать числа от 0 до переданного аргумента.

А также ещё одну генераторную функцию delegator, которая будет возвращать числа из итерируемого объекта source, который передадим в качестве аргумента.

Цикл, который можно написать в delegator, можно заменить всего лишь одной строчкой. То есть yield from заменяет цикл for, в котором только возвращаются значения через yield.

Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации delegator можно назвать делигирующим генератором, а subgen подгенератором.

#генераторы
Официальное упорядочивание словарей

Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.

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

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

#словари
Дробные числа

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

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

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

#числа #fraction
Проверяем скорость интернета

Каждый хоть раз проверял скорость своего интернета на Speedtest. А у них, оказывается, есть не только сайт и приложения, но и пакет на Python для этого дела.

У объекта класса Speedtest методы download() и upload() выдают соответственно скорость скачивания и загрузки данных.

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

#speedtest
​​Сортировка пузырьком

Для сортировки списков в Python уже есть встроенные функция sorted() и метод .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.

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

В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.

#списки #сортировка
Именованные кортежи

Кортежи tuple, по своей сути, являются неизменяемыми списками. Структура данных удобная, но мы можем получать данные, используя только числовые индексы.

Нет возможности дать имена отдельным элементам, сохранённым в кортеже. Это может повлиять на читаемость кода. И в таком случае используют именованные кортежи namedtuple из collections.

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

#namedtuple
🚀 В Телеграм появился новый канал, на котором бесплатно учат кибербезу

CyberSec News — тут рассказывают, как защититься от хакеров, находить уязвимости в программах и сайтах и стать белым хакером.

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

А еще он понятно пишет и разъясняет работу каждой уязвимости на пальцах. Поэтому будет полезно почитать специалистам любого уровня.

Да и тем, кому просто нравится кибербез и самураи — тоже зайдет ;)

Заглядывайте, если хотите стать этичным хакером → @CyberNewsSe
Нахождение наиболее частых элементов списка

Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком Counter из библиотеки collections.

Метод Counter.most_common(x) возвращает x кортежей, в которых первое значение – элемент, а второе – количество его повторений.

#collections #counter
Очистка элементов в последовательности

Встроенный модуль itertools был создан для работы с более сложными случаями итераторов. Плюс модуля в том, что он быстро работает и оптимизирован в плане памяти.

Иногда возникает необходимость в удалении ненужных объектов последовательности. Как раз для этого и используют itertools, а именно метод compress.

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

Если логическое значения равно True или 1, то элемент сохраняется в последовательности, в противном случае — удаляется из нее.

#itertools
Бесплатный курс VK Education: углублённый Python для студентов и недавних выпускников

Завершается набор на бесплатный онлайн-курс «Углублённый Python», обучение стартует уже 12 сентября. Если вы знакомы с базовыми принципами этого языка и стремитесь освоить его глубже, то этот курс создан специально для вас.

Программа включает как онлайн-занятия, так и очные лекции в московском офисе VK.

Вас ждут не только теоретический материал, но и практические мастер-классы, и возможность поучаствовать в хакатоне.

Отличительной особенностью курса является то, что успешные выпускники получат преимущество при трудоустройстве в VK.

Для подачи заявки на курс нужно поспешить — набор продлится до конца сегодняшнего дня! Подробная информация о программе размещена на странице курса и в статье на Хабре.
Режим разработки

Оказывается, еще в Python 3.7 появилась возможность запускать скрипты со специальным флагом -X для указания различных вариантов реализации.

Например, -X dev запускает скрипт в режиме разработки с функциями отладки и runtime-проверки, которые не используются по умолчанию из-за своей медлительности.

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

— Незакрытые файлы;
— Unawaited корутины;
— Неизвестная кодировка для str.encode;
— Проблемы с выделением памяти.

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

#python
Упрощение создания операторов сравнения

Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно – __lt__, __le__, __eq__, __ne__, __gt__, __ge__.

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

В таком случае достаточно реализовать в классе только __lt__ и __eq__. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов.

#классы
Пишем асинхронных ботов для ВК

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

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

Код, написанный на vkbottle, чем-то похож на всем знакомый flask. А пример выше реализует бота, который отвечает сообщением "Здравствуй!" на "Привет".

#боты #vk
This media is not supported in your browser
VIEW IN TELEGRAM
SmartDev 2023 — большая конференция про технологии от Сбера

21 сентября в кинотеатре «Октябрь» пройдет технологическая конференция SmartDev 2023, организованная Сбером. На одной площадке соберутся ведущие инженеры и разработчики из Сбера, VK, Яндекса, Kaspersky и других компаний, чтобы обменяться опытом создания лучших технологических решений в мире.

Основные темы конференции:
– Машинное обучение и искусственный интеллект
– Архитектура программных решений
– DevOps
– Работа с большими данными
– Безопасность приложений
– Инновации и стратегии в разработке ПО

Кроме того, участники конференции смогут задать вопросы создателям нашумевших проектов от Сбера — сервиса GigaChat и нейросети Kandinsky, а также впервые в России услышать выступление генерального директора Gitee, китайского аналога GitHub.

Конференция соберёт 1500 участников в офлайне и несколько тысяч зрителей в онлайне.

Участие бесплатное, подробности и регистрация — на сайте конференции
Перечисления

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

Из документации можно узнать о том, что Enum — это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность.

Также можно задать геттер через @property, который используют для получения перечислений в других форматах. В примере реализовано перечисление цветов в RGB, а через геттер их можно получить в формате hex.

#enum
Простой, мощный и асинхронный веб-фреймворк

Одним из популярных фреймворков для разработки серверной части на Python является FastAPI. К слову, он уже догоняет Django и Flask по звездам на GitHub.

FastAPI предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. Он является одним из самых быстрых фреймворков на Python.

Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу http://127.0.0.1:8000/ и посмотреть результат.

#модули
This media is not supported in your browser
VIEW IN TELEGRAM
IT-ипотека от 2,5%: все фичи от отделки до мебели

«Самолет» меняет представление о загородной жизни и предлагает проект, где максимально апдейтнули городской уровень комфорта — «Дмитров Дом».

🏘 Здесь классный фронтенд: готовые дома площадью от 61 до 225 м², полноценная экосистема, где все находится в шаговой доступности, а также единое оформление всех пространств. Можно взять MVP с базовой отделкой, а можно добавить в ипотеку полезных фич: кухню, мебель, баню, террасу и беседку.

🌐 Бэкенд тоже не подводит: все коммуникации, в том числе и высокоскоростной интернет, уже проведены — начинать спринты можно сразу после заезда. Работает профессиональная управляющая компания в доступе 24/7 в один клик в приложении — уникальная опция для ИЖС.

Преимущества проекта в его инфраструктуре, которая позволяет жить без забот: интернет даже на улице, коворкинг, поликлиника, школа, детский сад, магазины и кафе, конный клуб, собственный досуговый центр и многое другое — всё в шаговой доступности.

В сентябре загородный дом с участком можно взять в ипотеку со ставкой от 2,5% для IT-специалистов — платеж будет такой же, как за квартиру.

«Дмитров Дом» поможет по-новому взглянуть на загородную жизнь и удаленную работу. Если выбрать дом сейчас, то можно успеть встретить в нем Новый год! Выбрать дом можно по ссылке: https://smlt.ru/12popix

Реклама. ООО «СЗ «Самолет-Дмитров».
Мощная декларативная библиотека для работы с датой и временем

Большинство разработчиков знают про модуль datetime из стандартной библиотеки - достаточно хороший инструмент для работы с временем. Но не лишним будет узнать про его мощное расширение - dateutil.

dateutil позволяет писать краткий и декларативный код для решения задач по взаимодействию с датой и временем.

На скриншоте показано получение первого дня прошлого месяца с помощью dateutil и без.

Примечательно то, что dateutil позиционируется как расширение для datetime, что значит, что они друг с другом совместимы.
Асинхронные запросы с aiohttp

Модуль aiohttp представляет из себя асинхронный HTTP клиент/сервер для asyncio и Python. Он позволяет выполнять асинхронные HTTP запросы, что делает его идеальным инструментом для современных приложений, где требуется высокая производительность и параллелизм.

Установка aiohttp производится через pip. Чтобы начать делать асинхронные запросы, вам потребуется взаимодействовать с ним с помощью синтаксиса async/await. Запросы, такие как GET, POST, PUT и DELETE, оформляются чисто и ясно. Объекты ответов содержат все необходимые атрибуты для обработки ответов от сервера.

Модуль aiohttp подходит не только для работы с асинхронными веб-сервисами, но и для асинхронного скрапинга веб-страниц.

#модули
GitVerse: новая разработка СберТех для взаимодействия программистов и разработчиков

Дочерняя компания Сбера СберТех разработала GitVerse — Open Source сервис для совместной разработки проектов и хостинга кода. Презентация состоялась в рамках конференции SmartDev 2023.

GitVerse хостится в России для устранения рисков в отказе доступа российским пользователем и создан для упрощения разработки, позволяя выполнять задачи по сборке, тестированию, развертыванию и проверке кода в общей среде. Сервис автоматизирует процессы, упрощает хранение кода и управление репозиторием, а также позволяет назначать задачи и комментировать.

Кроме того, GitVerse интегрируется с GigaCode, AI-помощником, который повышает эффективность кодирования.

«Сегодня весь мировой IT-рынок движется по направлению к Open Source, и важно чтобы российские разработчики имели все необходимые инструменты для созданий передовых технологических решений. Теперь у них появился сервис, с помощью которого они могут создавать программные проекты и быть уверены в сохранности доступа к ним, ведь это полностью отечественное решение, независимое от иностранных вендоров и технологий.
» - Андрей Белевцев, старший вице-президент, CTO, руководитель блока «Технологии» Сбербанка.

GitVerse бесплатно предоставит 2 ГБ для использования сервисных ресурсов, плагинов IDE для упрощения разработки и информационный портал с новостями и материалами с открытым исходным кодом.

Доступ к сервису откроется в начале 2024 года, а зарегистрироваться для раннего тестирования можно уже сейчас на странице проекта.
2024/09/28 11:15:49
Back to Top
HTML Embed Code: