Telegram Web Link
Очень удобный телеграм бот для написания кода!

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

Если вы тоже решили начать изучать 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
Проверяем скорость интернета

Каждый хоть раз проверял скорость своего интернета на 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
Использование модуля secrets для генерации случайных значений

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

Применение модуля secrets просто и напоминает работу с модулем random. Вот некоторые из его функций:
- secrets.choice(collection) выбирает и возвращает случайный элемент из предоставленной коллекции.
- secrets.randbelow(n) генерирует случайное целое число в пределах от 0 до n.
- secrets.randbits(n) создает целое число из n случайных бит.
- secrets.token_bytes(n) выдает случайную последовательность байт длиной в n байт.
- token_hex(n) предоставляет случайную строку из n байт, преобразованную в шестнадцатеричный формат.
- token_urlsafe(n) генерирует URL-безопасную строку длиной в n байт, закодированную в Base64.

Также, в модуле присутствует класс SystemRandom, поддерживающий большинство методов модуля random.

#python #secrets #random
Поверхностное копирование

Копирование объектов может быть «поверхностное» (shallow) или «глубокое» (deep). Различия между ними заключаются в том, как обрабатываются вложенные объекты.

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

#python
Метод join у строк

У строк есть полезный метод str.join(), который принимает на вход итерируемый объект, элементами которого также должны быть строки.

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

Проще говоря, если применить к строке этот метод, то она станет разделителем для элементов в новой строке.

#python #string
2025/02/22 23:22:14
Back to Top
HTML Embed Code: