TGINSIGHT CHAT
Python Academy
@python_academy
EducaciónPython Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Posts recientes
Etiqueta: #python · 330 posts
Познакомьтесь с IceCream: Улучшенным выводом в Python Hедавно мы наткнулись на потрясающий инструмент для отладки и разработки в Python, и хотим поделиться им с вами! Представляем вам icecream - библиотеку, которая упрощает отладку, улучшая вывод ваших данных. Что такое icecream? icecream - это легковесная библиотека для Python, которая предоставляет простые, но мощные инструменты для отслеживания и вывода значений переменных и данных в процессе выполнения кода. Этот инструмент полезен при отладке, тестировании и разработке, помогая вам лучше понять, что происходит в вашей программе. Преимущества icecream перед стандартным print: 1. Читабельность и простота в использовании: icecream автоматически выводит имя переменной и ее значение, что делает вывод более понятным и читабельным. 2. Цветовая кодировка: icecream поддерживает цветовую кодировку вывода, что делает его более наглядным и удобным для анализа. Настройка icecream: icecream позволяет настраивать вывод, добавлять дополнительную информацию, и даже сохранять логи в файл. Вы можете настроить icecream в соответствии с вашими потребностями, делая вывод более информативным и удобным. from icecream import ic, install install(autodetect=True, includeContext=True) number = 42 ic(number) text = "Привет, мир!" ic(text) Это добавит контекст, такой как имя файла и номер строки, в вывод: ic| <ipython-input-1-5a0d5d83d2d3>:1 in <module> - number: 42 ic| <ipython-input-1-5a0d5d83d2d3>:4 in <module> - text: 'Привет, мир!' Автор идеи поста: @hexvel Если у вас есть предложения для следующего поста, делитесь в комментариях! #Python#logging#icecream
Получение срезов итераторов Если вы попытаетесь получить срез итератора, то столкнётесь с ошибкой TypeError, сообщающей о том, что на объект-генератор нельзя оформить подписку. Однако эта проблема поддаётся решению (см картинку). Воспользовавшись методом itertools.islice, можно создать объект islice, который представляет собой итератор, выдающий нужные элементы. Однако здесь важно отметить то, что эта конструкция использует все элементы генератора вплоть до начала среза и все элементы в объекте islice. #python
Hashtags
Создание скриншотов с использованием модуля pyscreenshot Модуль pyscreenshot, обеспечивая кросс-платформенную функциональность, позволяет легко создавать скриншоты как всего экрана, так и его отдельных частей. Для работы этого модуля необходимо установить библиотеку Pillow. Для захвата изображения используется метод grab, для его отображения – show, а для сохранения – save. В метод grab можно также передать аргумент bbox, чтобы ограничить захват только определенной областью экрана. Этот модуль оказывается особенно полезным, например, при логировании скриптов, использующих Selenium. Selenium может открывать браузер и выполнять различные операции в нем, и использование pyscreenshot позволяет создавать скриншоты для последующего анализа и отладки. #python#pyscreenshot
Hashtags
Асинхронно скачиваем файлы Имея список ссылок на картинки, которые нужно скачать, мы можем это сделать используя простой цикл for, тем самым скачав их последовательно одна за одной. Но в таких ситуациях как эта (скачивание огромного количества небольших файлов) распараллеливание задачи существенно ускорит процесс. Для этого воспользуемся функцией ThreadPoolExecutor из стандартного пакета concurrent.futures. Она позволяет запустить нашу функцию, в нескольких екземплярах в параллельных потоках. В конструкторе необходимо указать максимальное количество потоков, которые будут одновременно запущены. Далее метод .map(download, urls) создает екземпляры нашей функции для скачивания файла, и раскидывает в них элементы списка urls. Но будьте внимательны: так как скачивание файла — это IO-операция, такой метод не ускоряет вычисления кода. Он лишь позволяет запустить скачивание следующего файла, не дождавшись пока скачается предыдущий. #python#threading
Hashtags
Генераторы коллекций В Python генераторы коллекций (или генераторы) представляют собой удобный способ создания итерируемых последовательностей данных без необходимости сохранять все элементы в памяти. Они могут использоваться для генерации значений на лету, что делает их полезными для работы с большими или бесконечными последовательностями данных. Генераторы коллекций можно создать с использованием специального синтаксиса, который похож на генераторы списков, но вместо создания списка они создают генераторный объект. В примере на картинке мы создали генератор выражений. Генераторы выражений особенно полезны, когда вы работаете с большими объемами данных, так как они не сохраняют все элементы в памяти, а генерируют их по мере необходимости. #python
Hashtags
Декоратор override @overrideиспользуется для переопределения методов в классах-наследниках. Он позволяет указать, что метод в подклассе переопределяет метод базового класса. Это может быть полезно для: — Повышения читабельности кода, так как сразу видно, какие методы переопределены. — Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка. — Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом. #python#decorators
Hashtags
Разница между генераторными выражениями и генераторами коллекций Записи в первой и второй строчке в коде выше очень похожи, но различаются видами скобок. В генераторе списка они квадратные, а в генераторном выражении – круглые. Распечатав переменные, можно заметить, что значением переменной a является список, а переменная x хранит в себе объект генератора. И здесь возникает вопрос, что же использовать. Если вам нужен результат, например в виде списка, прямо сейчас для дальнейшего выполнения программы, то используйте генераторы коллекций. А если же значения понадобятся еще не скоро или вообще неизвестно, понадобится ли они вообще, то предпочтительнее генераторы, чтобы не занимать лишнюю память и не нагружать систему. #python
Hashtags
Распаковывание последовательностей при неизвестном числе элементов Для указанного в подзаголовке случая в Python 3 есть оператор звездочки – расширенная операция распаковывания последовательности. Переменной со звездочкой присваивается часть списка, содержащая все неприсвоенные элементы, соответствующие этой позиции. #python
Hashtags
Сравнение двух аудиосообщений с использованием библиотеки Librosa Librosa — библиотека, которая обеспечивает анализ и обработку звука. Сравнение производится путем вычисления характеристик MFCC (Mel Frequency Cepstral Coefficients), описывающих звуковую сигнатуру каждогоаудио. Важныезамечания: — Для точного сравнения аудиозаписей они должны иметь одинаковуюпродолжительность и аналогичныеусловия записи (громкость, уровень шума и т.д.). — Возможно потребуется дополнительная предварительная обработка, например, нормализация громкости. #python#librosa
Функция reload() Функция reload() в Python перезагружает ранее импортированный модуль. Это означает, что код модуля выполняется заново, и любые изменения в модуле становятся доступными. Функция reload() принимает в качестве аргумента объект модуля. Этот объект должен быть ранее импортированным модулем. #python
Hashtags
Удаление страниц PDF-файла Библиотека PyMuPDF включает в себя довольно много сложных методов, которые упрощают удаление страниц из файла PDF. Он позволяет указать либо одну страницу (используя метод deletePage()), либо диапазон номеров страниц (используя метод deletePageRange()), либо список с номерами страниц (используя метод select()). В следующем примере показано, как использовать список для выбора страниц, которые нужно сохранить в исходном документе. Имейте в виду, что страницы, которые не указаны, не будут частью выходного документа. В нашем случае выходной документ содержит только первую, вторую и четвертую страницы. #python
Hashtags
Библиотека для генерации рандомных данных Mimesis — это модуль, предназначенный для генерациислучайныхданных. Это особенно полезно при тестировании алгоритмов, когда требуется большойобъемданных. Использование Mimesis избавляет от необходимости создавать эти данные вручную, существенноэкономя время. Этот код сгенерирует случайные адресные данные, такие как название города, улицы, номер дома и координаты. #python#mimesis