Telegram Web Link
Ускоряем код с помощью векторизации

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

Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize.

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

#vectorize #numpy
Получаем метаданные из аудиофайла

Для извлечения метаданных из аудиофайлов, а также их редактирования есть очень удобный модуль mutagen. Модуль позволяет получить всю основную информацию об аудиофайле: длину, битрейт, исполнителя и так далее.

Модуль поддерживает форматы метаданных APEv2 и ID3v2, анализируя все кадры ID3v2.4 (посмотреть все нужные теги ID3v2 можно тут).

#audio #mutagen
Очень удобный телеграм бот для написания кода!

Мощная нейросеть в телеграм боте, которая поможет стажерам и начинающим, так и опытным спецам для написания, проверки и доработки кода.

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

Идем тестировать — тут.

#python #gigachat
Отлавливаем баги с assert

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

Но если попробовать выполнить инструкцию assert с логическим выражением, которое равно False, то будет сгенерировано исключение AssertionError.
 
Исключения AssertionError предназначены скорее для отладки. При написании программ на этапе разработки мы можем видеть, что делаем что-то не так (например, передали в метод некорректное значение). 

Также не нужно, к примеру, обрабатывать пользовательский ввод и пытаться обработать исключение AssertionError блоком try-except.

Если в вашем коде будет очень много assert'ов, то это затронет и производительность программы.

#исключения #assert
FastAPI Template — лучший темплейт со всем что надо для старта на FastAPI!

Одной из самых замечательных особенностей является то, что этот проект очень легко настраивается. Вы можете выбирать между различными базами данных и даже ORM, а можете даже сгенерировать проект без базы данных! В настоящее время поддерживаются SQLAlchemy 2.0, TortoiseORM, Piccolo и Ormar.

Фичи темплейта:
- Pydantic V2 (где это возможно, некоторые либы не поддерживают)
- Вы можете выбрать между GraphQL и REST API
- uvicorn и gunicorn
- Поддержка различных баз данных и ORM
- Опциональные миграции для каждого ORM (кроме сырых драйверов)
- Различные CI\CD
- Дополнительные демонстрационные роуты и модели (это поможет вам увидеть, как устроен проект)
- Сгенерированные тесты с почти 90% покрытием
- Дополнительная поддержка Redis, RabbitMQ, Kafka и taskiq
- Опциональная интеграция с Prometheus, Sentry и Opentelemetry
- Опциональный логгер Loguru

Ссылку оставляю тут.

#python #fastapi #template
Используем Tortoise ORM для работы с базой данных в Python

Tortoise ORM - это современный и эффективный инструмент для работы с базами данных в Python, который предоставляет асинхронный интерфейс доступа к данным. Он позволяет удобно выполнять операции CRUD (Create, Read, Update, Delete) с данными и облегчает работу с базами данных.

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

В этом примере мы создаем модель User, представляющую таблицу пользователей. Затем мы подключаемся к базе данных, создаем таблицу users и выполняем операции CRUD с данными пользователя.

Tortoise ORM обеспечивает удобный и интуитивно понятный интерфейс для работы с базами данных в асинхронных приложениях Python.

#python #orm #tortoise
Понимание различий между операторами сравнения == и is

Множество разработчиков сталкиваются с трудностями в отличии двух операторов сравнения: == и is, что может привести к неожиданным ошибкам в коде.

Оператор == сравнивает значения двух объектов, чтобы определить их равенство. В отличие от него, оператор is проверяет, ссылаются ли две переменные на один и тот же объект в памяти, тем самым проверяя их идентичность.

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

#python
Логирование

Логировние является неотъемлемой частью разработки. Логи показывают информацию о текущем состоянии программы. И чем лучше выстроено логирование, тем проще будет разобраться в нестандартных ситуациях.

Python поставляется для этих целей с гибким модулем logging. Для создания объекта Logger, вызываем функцию getLogger, передавая в нее имя логера.

Созданный объект Logger предоставляет методы для записи сообщений разного уровня (DEBUG, INFO, WARNING, ERROR, CRITICAL), что удобно для поиска нужной информации с применением фильтров.

По умолчанию в logging задан уровень WARNING, это означает, что сообщения уровня DEBUG и INFO будут игнорироваться при записи в лог. Изменить данное поведение можно с помощью метода setLevel, передав минимальный уровень, который будет отлавливаться.

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

#logging
Отправляем запросы с HTTPX

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

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

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

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

#httpx
Разработка веб-приложений с использованием фреймворка Flask в Python

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

В данном примере мы создаем простое веб-приложение с одним маршрутом "/", который возвращает приветственное сообщение.

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

Для более подробной информации рекомендуется изучить официальную документацию Flask.

#python #flask
Хэширование

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

Для хэширования значений есть встроенная функция hash(). Используется она в основном для сравнения значений разных объектов — сравнивать хэши легче и выгоднее.

Но изменяемые объекты по типу списков и словарей нельзя хэшировать — интерпретатор выбросит соответствующую ошибку.

Здесь, кстати, есть две пасхалки. Хэш бесконечности равен перым цифрам числа Пи, а хэш Not a Number равен нулю.

А еще случаются коллизии: например, хэши чисел -1 и -2 одинаковы.

#hash
Находим файлы по шаблону

Основной фишкой модуля glob является удобная и лаконичная работа с поиском файлов по паттернам. Более того, можно даже пройтись по директориям рекурсивно.

В одноименный метод glob передаётся шаблон для поиска файлов, а возвращается список с результатами. Все методы следуют механизму и правилам сопоставления паттернов в стиле Unix.

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

#glob
Управление версионностью Python с помощью pyenv

Инструмент pyenv предоставляет простой способ для переключения между различными версиями Python, придерживаясь принципов UNIX, согласно которым каждый инструмент должен эффективно выполнять свою задачу.

Возможности pyenv включают:

- Изменение глобальной версии Python для пользователя;
- Управление версиями Python для индивидуальных проектов;
- Переопределение версии Python через переменную среды;
- Поиск и выполнение команд сразу из нескольких версий Python.

#pyenv
Рассказываем как легко узнать самое короткое расстояние между двумя точками земли

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

В примере узнали, что расстояние между городами Нью-Йорк и Техас 2507 километров.

#python
Вычисляем ip-адрес своего компьютера

Для этого используется библиотека requests для отправки HTTP-запроса к веб-сервису ipify, который предоставляет API для определения публичного IP-адреса пользователя. Код написан в форме функции get_public_ip, что делает его удобным для повторного использования.

Использование блока try-except обеспечивает обработку исключений, которые могут возникнуть при запросе (например, проблемы с подключением к интернету). Если запрос успешен, функция возвращает IP-адрес, иначе возвращает сообщение об ошибке.

#python
Прогрессбар программы

Модуль tqdm предназначен для быстрого и расширяемого внедрения индикаторов выполнения (progressbar) во внешние интерфейсы программ на Python, предоставляя конечным пользователям визуальную индикацию хода вычислений или передачи данных.

Он также будет полезен в целях отладки, как в качестве инструмента профилирования, так и в качестве способа отображения информации журнала итеративной задачи.

#python #tqdm
Ипотека в Москве по низкой ставке

Level предлагают оформить IT-ипотеку по полной стоимости от 5,582 до 6,502% годовых. У вас есть возможность снизить ставку до 0,99% годовых. Предложение доступно тем, кто работает в аккредитованной Минцифры России IT-компании не меньше трёх месяцев.

Если вам меньше 35 лет, можно оформить IT-ипотеку вне зависимости от уровня дохода. Специалистам от 35 до 50 лет одобряют ипотеку, если они подходят под условия месячного заработка.

Вы сможете до 15 месяцев платить по ставке 0,99% годовых. Конкретный срок определяется в зависимости от проекта. В акции участвуют проекты Level Академическая, Южнопортовая, Нижегородская, Селигерская, Мичуринский и Бауманская.

Когда льготный период закончится, ставка будет всего 5%.

Заявку можно подать до 31 марта. Действуйте быстро — и воспользуйтесь отличным шансом приобрести своё жильё. Подробности о проекте читайте на сайте девелопера.
Проверяем скорость интернета

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

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

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

#python #speedtest
Делаем простой интерфейс используя tkinter

tkinter - это стандартная библиотека для создания графического пользовательского интерфейса (GUI) в Python. Она предоставляет простой и удобный способ создания оконных приложений с использованием виджетов, таких как кнопки, текстовые поля, списки и многое другое.

Хотя tkinter может показаться менее мощным по сравнению с некоторыми другими библиотеками GUI для Python, такими как PyQt или wxPython, она остается популярным выбором для начинающих разработчиков и для создания простых и удобных в использовании GUI-приложений.

#python #tkinter
Использование Docker вместе с Python

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

Зачем его использовать?
- Упрощение настройки среды: Docker избавляет от фразы "у меня работает, а у тебя нет". Все необходимые зависимости, библиотеки и окружение можно упаковать в контейнер, который будет работать одинаково на любой машине.

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

- Изоляция приложений: Каждое приложение работает в своем контейнере, не влияя на работу других приложений и системы в целом.

#python #docker
2024/11/15 15:16:48
Back to Top
HTML Embed Code: