Делегирующие генераторы
Давайте создадим простенькую генераторную функцию
А также ещё одну генераторную функцию
Цикл, который можно написать в
Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации
#генераторы
Давайте создадим простенькую генераторную функцию
subgen
, которая будет возвращать числа от 0 до переданного аргумента.А также ещё одну генераторную функцию
delegator
, которая будет возвращать числа из итерируемого объекта source
, который передадим в качестве аргумента.Цикл, который можно написать в
delegator
, можно заменить всего лишь одной строчкой. То есть yield from
заменяет цикл for
, в котором только возвращаются значения через yield
.Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации
delegator
можно назвать делигирующим генератором, а subgen
подгенератором.#генераторы
Официальное упорядочивание словарей
Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.
Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше.
Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки.
#словари
Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.
Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше.
Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки.
#словари
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Decimal
, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction
, который представляет и хранит число в виде рациональной дроби.#числа #fraction
Проверяем скорость интернета
Каждый хоть раз проверял скорость своего интернета на Speedtest. А у них, оказывается, есть не только сайт и приложения, но и пакет на Python для этого дела.
У объекта класса
Методы отдают результат в байтах, поэтому для наглядности в примере я перевел все данные в мегабайты при выводе.
#speedtest
Каждый хоть раз проверял скорость своего интернета на Speedtest. А у них, оказывается, есть не только сайт и приложения, но и пакет на Python для этого дела.
У объекта класса
Speedtest
методы download()
и upload()
выдают соответственно скорость скачивания и загрузки данных.Методы отдают результат в байтах, поэтому для наглядности в примере я перевел все данные в мегабайты при выводе.
#speedtest
Сортировка пузырьком
Для сортировки списков в Python уже есть встроенные функция
Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит.
В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
#списки #сортировка
Для сортировки списков в Python уже есть встроенные функция
sorted()
и метод .sorted()
, но достаточно важно самому знать хотя бы несколько реализаций.Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит.
В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
#списки #сортировка
Именованные кортежи
Кортежи
Нет возможности дать имена отдельным элементам, сохранённым в кортеже. Это может повлиять на читаемость кода. И в таком случае используют именованные кортежи
Каждый объект в именованном кортеже может быть доступен через уникальный, удобный для чтения человеком, идентификатор. При этом вся функциональность от обычных кортежей сохраняется.
#namedtuple
Кортежи
tuple
, по своей сути, являются неизменяемыми списками. Структура данных удобная, но мы можем получать данные, используя только числовые индексы. Нет возможности дать имена отдельным элементам, сохранённым в кортеже. Это может повлиять на читаемость кода. И в таком случае используют именованные кортежи
namedtuple
из collections
. Каждый объект в именованном кортеже может быть доступен через уникальный, удобный для чтения человеком, идентификатор. При этом вся функциональность от обычных кортежей сохраняется.
#namedtuple
🚀 В Телеграм появился новый канал, на котором бесплатно учат кибербезу
CyberSec News — тут рассказывают, как защититься от хакеров, находить уязвимости в программах и сайтах и стать белым хакером.
Его ведет гик-специалист по безопасности, который фанатеет от киберпанка и самураев. Поэтому во все посты он вписывает прикольные японские фразочки.
А еще он понятно пишет и разъясняет работу каждой уязвимости на пальцах. Поэтому будет полезно почитать специалистам любого уровня.
Да и тем, кому просто нравится кибербез и самураи — тоже зайдет ;)
Заглядывайте, если хотите стать этичным хакером → @CyberNewsSe
CyberSec News — тут рассказывают, как защититься от хакеров, находить уязвимости в программах и сайтах и стать белым хакером.
Его ведет гик-специалист по безопасности, который фанатеет от киберпанка и самураев. Поэтому во все посты он вписывает прикольные японские фразочки.
А еще он понятно пишет и разъясняет работу каждой уязвимости на пальцах. Поэтому будет полезно почитать специалистам любого уровня.
Да и тем, кому просто нравится кибербез и самураи — тоже зайдет ;)
Заглядывайте, если хотите стать этичным хакером → @CyberNewsSe
Нахождение наиболее частых элементов списка
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком
Метод
#collections #counter
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком
Counter
из библиотеки collections
.Метод
Counter.most_common(x)
возвращает x
кортежей, в которых первое значение – элемент, а второе – количество его повторений.#collections #counter
Очистка элементов в последовательности
Встроенный модуль
Иногда возникает необходимость в удалении ненужных объектов последовательности. Как раз для этого и используют
Первым аргументом передается какой-либо контейнер, например список. Вторым аргументом — логические значения, соответствующие элементам в последовательности.
Если логическое значения равно
#itertools
Встроенный модуль
itertools
был создан для работы с более сложными случаями итераторов. Плюс модуля в том, что он быстро работает и оптимизирован в плане памяти. Иногда возникает необходимость в удалении ненужных объектов последовательности. Как раз для этого и используют
itertools
, а именно метод compress
.Первым аргументом передается какой-либо контейнер, например список. Вторым аргументом — логические значения, соответствующие элементам в последовательности.
Если логическое значения равно
True
или 1
, то элемент сохраняется в последовательности, в противном случае — удаляется из нее. #itertools
Бесплатный курс VK Education: углублённый Python для студентов и недавних выпускников
Завершается набор на бесплатный онлайн-курс «Углублённый Python», обучение стартует уже 12 сентября. Если вы знакомы с базовыми принципами этого языка и стремитесь освоить его глубже, то этот курс создан специально для вас.
Программа включает как онлайн-занятия, так и очные лекции в московском офисе VK.
Вас ждут не только теоретический материал, но и практические мастер-классы, и возможность поучаствовать в хакатоне.
Отличительной особенностью курса является то, что успешные выпускники получат преимущество при трудоустройстве в VK.
Для подачи заявки на курс нужно поспешить — набор продлится до конца сегодняшнего дня! Подробная информация о программе размещена на странице курса и в статье на Хабре.
Завершается набор на бесплатный онлайн-курс «Углублённый Python», обучение стартует уже 12 сентября. Если вы знакомы с базовыми принципами этого языка и стремитесь освоить его глубже, то этот курс создан специально для вас.
Программа включает как онлайн-занятия, так и очные лекции в московском офисе VK.
Вас ждут не только теоретический материал, но и практические мастер-классы, и возможность поучаствовать в хакатоне.
Отличительной особенностью курса является то, что успешные выпускники получат преимущество при трудоустройстве в VK.
Для подачи заявки на курс нужно поспешить — набор продлится до конца сегодняшнего дня! Подробная информация о программе размещена на странице курса и в статье на Хабре.
Режим разработки
Оказывается, еще в Python 3.7 появилась возможность запускать скрипты со специальным флагом
Например,
Также этот режим выводит дополнительные предупреждения в следующих случаях:
— Незакрытые файлы;
— Unawaited корутины;
— Неизвестная кодировка для
— Проблемы с выделением памяти.
В целом, классная штука и имеет смысл периодически запускать скрипты в таком режиме, чтобы не упустить никакие баги.
#python
Оказывается, еще в Python 3.7 появилась возможность запускать скрипты со специальным флагом
-X
для указания различных вариантов реализации.Например,
-X dev
запускает скрипт в режиме разработки с функциями отладки и runtime-проверки, которые не используются по умолчанию из-за своей медлительности.Также этот режим выводит дополнительные предупреждения в следующих случаях:
— Незакрытые файлы;
— Unawaited корутины;
— Неизвестная кодировка для
str.encode
;— Проблемы с выделением памяти.
В целом, классная штука и имеет смысл периодически запускать скрипты в таком режиме, чтобы не упустить никакие баги.
#python
Упрощение создания операторов сравнения
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
В таком случае достаточно реализовать в классе только
#классы
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
__lt__
, __le__
, __eq__
, __ne__
, __gt__
, __ge__
.Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
total_ordering
из пакета functools
.В таком случае достаточно реализовать в классе только
__lt__
и __eq__
. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов.#классы
Пишем асинхронных ботов для ВК
Под постом про проект подписчика, связанный с написанием ВК ботов, в комментариях упомянули про модуль
Библиотека является асинхронной и требует минимум кода со стороны разработчика, что позволяет сконцентрироваться на задаче, не тратя силы и время на само взаимодействие с API.
Код, написанный на
#боты #vk
Под постом про проект подписчика, связанный с написанием ВК ботов, в комментариях упомянули про модуль
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 участников в офлайне и несколько тысяч зрителей в онлайне.
Участие бесплатное, подробности и регистрация — на сайте конференции
21 сентября в кинотеатре «Октябрь» пройдет технологическая конференция SmartDev 2023, организованная Сбером. На одной площадке соберутся ведущие инженеры и разработчики из Сбера, VK, Яндекса, Kaspersky и других компаний, чтобы обменяться опытом создания лучших технологических решений в мире.
Основные темы конференции:
– Машинное обучение и искусственный интеллект
– Архитектура программных решений
– DevOps
– Работа с большими данными
– Безопасность приложений
– Инновации и стратегии в разработке ПО
Кроме того, участники конференции смогут задать вопросы создателям нашумевших проектов от Сбера — сервиса GigaChat и нейросети Kandinsky, а также впервые в России услышать выступление генерального директора Gitee, китайского аналога GitHub.
Конференция соберёт 1500 участников в офлайне и несколько тысяч зрителей в онлайне.
Участие бесплатное, подробности и регистрация — на сайте конференции
Перечисления
Python поддерживает простой механизм работы с перечислениями, которые ещё называют
Из документации можно узнать о том, что
Также можно задать геттер через
#enum
Python поддерживает простой механизм работы с перечислениями, которые ещё называют
enum
. Подобные перечисления удобно использовать для хранения списков констант. Из документации можно узнать о том, что
Enum
— это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность.Также можно задать геттер через
@property
, который используют для получения перечислений в других форматах. В примере реализовано перечисление цветов в RGB, а через геттер их можно получить в формате hex
.#enum
Простой, мощный и асинхронный веб-фреймворк
Одним из популярных фреймворков для разработки серверной части на Python является FastAPI. К слову, он уже догоняет Django и Flask по звездам на GitHub.
FastAPI предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. Он является одним из самых быстрых фреймворков на Python.
Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу
#модули
Одним из популярных фреймворков для разработки серверной части на 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
Реклама. ООО «СЗ «Самолет-Дмитров».
«Самолет» меняет представление о загородной жизни и предлагает проект, где максимально апдейтнули городской уровень комфорта — «Дмитров Дом».
🏘 Здесь классный фронтенд: готовые дома площадью от 61 до 225 м², полноценная экосистема, где все находится в шаговой доступности, а также единое оформление всех пространств. Можно взять MVP с базовой отделкой, а можно добавить в ипотеку полезных фич: кухню, мебель, баню, террасу и беседку.
🌐 Бэкенд тоже не подводит: все коммуникации, в том числе и высокоскоростной интернет, уже проведены — начинать спринты можно сразу после заезда. Работает профессиональная управляющая компания в доступе 24/7 в один клик в приложении — уникальная опция для ИЖС.
Преимущества проекта в его инфраструктуре, которая позволяет жить без забот: интернет даже на улице, коворкинг, поликлиника, школа, детский сад, магазины и кафе, конный клуб, собственный досуговый центр и многое другое — всё в шаговой доступности.
В сентябре загородный дом с участком можно взять в ипотеку со ставкой от 2,5% для IT-специалистов — платеж будет такой же, как за квартиру.
«Дмитров Дом» поможет по-новому взглянуть на загородную жизнь и удаленную работу. Если выбрать дом сейчас, то можно успеть встретить в нем Новый год! Выбрать дом можно по ссылке: https://smlt.ru/12popix
Реклама. ООО «СЗ «Самолет-Дмитров».
Мощная декларативная библиотека для работы с датой и временем
Большинство разработчиков знают про модуль datetime из стандартной библиотеки - достаточно хороший инструмент для работы с временем. Но не лишним будет узнать про его мощное расширение - dateutil.
dateutil позволяет писать краткий и декларативный код для решения задач по взаимодействию с датой и временем.
На скриншоте показано получение первого дня прошлого месяца с помощью dateutil и без.
Примечательно то, что dateutil позиционируется как расширение для datetime, что значит, что они друг с другом совместимы.
Большинство разработчиков знают про модуль 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 года, а зарегистрироваться для раннего тестирования можно уже сейчас на странице проекта.
Дочерняя компания Сбера СберТех разработала GitVerse — Open Source сервис для совместной разработки проектов и хостинга кода. Презентация состоялась в рамках конференции SmartDev 2023.
GitVerse хостится в России для устранения рисков в отказе доступа российским пользователем и создан для упрощения разработки, позволяя выполнять задачи по сборке, тестированию, развертыванию и проверке кода в общей среде. Сервис автоматизирует процессы, упрощает хранение кода и управление репозиторием, а также позволяет назначать задачи и комментировать.
Кроме того, GitVerse интегрируется с GigaCode, AI-помощником, который повышает эффективность кодирования.
«Сегодня весь мировой IT-рынок движется по направлению к Open Source, и важно чтобы российские разработчики имели все необходимые инструменты для созданий передовых технологических решений. Теперь у них появился сервис, с помощью которого они могут создавать программные проекты и быть уверены в сохранности доступа к ним, ведь это полностью отечественное решение, независимое от иностранных вендоров и технологий.» - Андрей Белевцев, старший вице-президент, CTO, руководитель блока «Технологии» Сбербанка.
GitVerse бесплатно предоставит 2 ГБ для использования сервисных ресурсов, плагинов IDE для упрощения разработки и информационный портал с новостями и материалами с открытым исходным кодом.
Доступ к сервису откроется в начале 2024 года, а зарегистрироваться для раннего тестирования можно уже сейчас на странице проекта.