TGINSIGHT CHAT
Python Academy
@python_academy
EducaciónPython Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Posts recientes
Pág. 12 de 85 · 1,014 posts
Упрощение создания операторов сравнения Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно – __lt__, __le__, __eq__, __ne__, __gt__, __ge__. Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор total_ordering из пакета functools. В таком случае достаточно реализовать в классе только __lt__ и __eq__. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов. #классы
Hashtags
Внедрение асинхронных задач с Taskiq Библиотека Taskiq предназначена для упрощения работы с асинхронными задачами в Python, позволяя разработчикам легко организовывать фоновуюобработкузадач. Это решение идеальноподходит для случаев, когда необходимо выполнять задачи, неблокируя основной поток приложения. Принцип работы с Taskiqпрост и интуитивно понятен, что демонстрируется на примерах в документации. Для примера использования библиотеки Taskiq, предположим, что вы хотите асинхронноотправитьemailбезблокирования основного потока выполнения вашего приложения. В этом примере мы создали простую асинхронную задачу для отправки email с использованием Taskiq. УстановкаTaskiq производится через менеджер пакетов pip. Более подробно о возможностях и применениибиблиотеки можно узнать в официальной документации. #python#taskiq
Особенности статических методов Основное отличие статических методов от методов экземпляра заключается в их привязке к классу, а не к отдельному объекту. Это означает, что их можно вызывать непосредственно через класс. Статические методы не получают ссылку на экземпляр (self) или класс (cls) в качестве аргументов, что делает их независимыми от состояния объекта или класса. Следовательно, они не могут изменять состояние объекта или класса. Существует дваосновных способа определения статического метода. Менее распространенный — назначение метода классу, используя функцию staticmethod для оборачивания исходного метода. Однако более предпочтительным является использование staticmethod как декоратора, что упрощает объявление статических методов непосредственно внутри класса. #python#staticmethod
Hashtags
Работа с данными в Python используя Pydantic Pydantic - это библиотека для Python, предназначенная для парсинга и валидации данных. Она использует статическую типизацию для атрибутов классов, что облегчает проверку данных при создании объектов. Этот инструмент особенно полезен при работе с JSON: он автоматизирует проверку структуры, необходимых полей и значений. Pydanticподдерживает не только стандартные типы данных, но и специализированные, такие как email, URL-адреса и номера платежных карт. Для более подробногопримера и документации можно обратиться сюда. #python#pydantic
Операции с zip архивами Для работы с zip файлами можно использовать встроенный модуль zipfile. Если кто не помнит, то zip файл — это архив, содержащий сжатые файлы. Просмотреть содержимое архива можно с помощью функции printdir, а извлечь все файлы можно вызвав extractfile. Также этот модуль позволяет создавать свои zip архивы, но мы решили не усложнять пример, поэтому просто прикладываем ссылку на документацию. #zipfile
Hashtags
Метод join у строк У строк есть полезный метод str.join(), который принимает на вход итерируемый объект, элементами которого также должны быть строки. Как результат получаем новую строку, которая является объединением всех элементов. При этом они разделены строкой, к которой изначально применялся метод. Проще говоря, если применить к строке этот метод, то она станет разделителем для элементов в новой строке. #строки
Hashtags
Получаем список переменных Функция locals() возвращает словарь переменных из текущего пространства имён. Ключи словаря — названия переменных, а значения — это их значения. С помощью похожей функции globals() можно получить все переменные конкретного модуля в таком же виде. Еще обратите внимание на результат второй функции: там много разных переменных, которые мы явно не объявляли — про некоторые из них скоро расскажем. #переменные
Hashtags
Сортировка списков по ключу У списков есть метод sort(), который сортирует элементы. Также есть аргумент reverse, с помощью которого можно отсортировать в обратном порядке при значении True. Но еще есть аргумент key, отвечающий за критерий сортировки. Он принимает функцию, которая применяется к каждому элементу. Возвращаемый результат и есть критерий, по которому произойдет сортировка. В коде на картинке у нас есть список из словарей, которые содержать описания машин. И в качестве мы отсортировали список по годам их выпуска, то есть по ключу 'year'. Также вместо написания обычных функций были применены анонимные, чтобы закрепить недавнюю тему о них. #списки
Hashtags
Создаем бесконечный итератор Функция cycle() из itertools принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элемента. Но если вы проходитесь циклом по такому итератору, то важно предусмотреть выход из цикла, иначе он станет бесконечным (как у нас в первом случае на картинке). Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта. #itertools
Hashtags
Запись экрана в Windows с помощью Python Для записиэкрана в Windows используя Python существует несколько библиотек, однако наиболееэффективной оказалась d3dshot. Библиотека d3dshot использует системные библиотеки DXGI и Direct3D для быстрого и надежного захвата экрана. Эта библиотека идеальноподходит для создания игровых ботов. #python#d3dshot
Обработка видео с помощью MoviePy MoviePy - это удобный пакет для выполнения различных задач по редактированиювидео, включая обрезку и склейкуклипов, добавление видеоэффектов и редактирование аудиодорожки. Пакет достаточно прост в освоении, и базовые принципы его использования можно увидеть на примере. В данном случае, мы открываем два видеофайла, соединяем их водин, обрезаем получившийся клип, уменьшаем громкость звука и сохраняем итоговый результат. Стоит учитывать, что обработка видео, особенно больших файлов, может занять значительноевремя. MoviePy особенно полезен, когда необходимо автоматизировать обработку большого количества видео по единомуалгоритму. #python#moviepy
Современный способ сериализации, десериализации и валидации данных adaptix - гибкая и легкоконфигурируемая библиотека для сериализации и десериализации данных. adaptix работает с нативными dataclass, NamedTuple, TypedDict.Ваши модели не зависят от библиотеки и не требуют наследования от каких-либо специальных классов, позволяя моделям оставаться чистыми, а вам - следовать принципу инверсии зависимостей. Также, библиотека позволяет легко создавать свои правила для конвертации данных и группировать их, соответствуя принципу DRY. Особое внимание стоит обратить на возможность преобразования стилей названий полей, что полезно в web приложениях. Приятным бонусом будет то, что adaptix до двух раз быстрее чем pydantic v2 (бенчмарки). #python#typing#adaptix