TGINSIGHT CHAT
Python Academy
@python_academy
EducaciónPython Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Posts recientes
Pág. 23 de 85 · 1,014 posts
Publicado 25 sept
Полезные функции модуля itertools Модуль itertools - инструмент в Python для работы с итерируемыми объектами. Он предоставляет различные функции для создания и манипулирования итераторами, что делает его незаменимым инструментом для разработчиков. Давайте рассмотрим некоторые полезные функции из этого модуля: 1. itertools.count(): Эта функция создает бесконечный итератор, который генерирует последовательность чисел, начиная с заданного значения. Это удобно использовать, например, при создании уникальных идентификаторов. 2. itertools.cycle(): Эта функция создает итератор, который бесконечно повторяет элементы из исходной последовательности. Это может быть полезно, когда вам нужно обрабатывать данные циклически. 3. itertools.islice(): С помощью этой функции можно получить срез элементов из итератора, подобно срезу для списков. Это позволяет работать с большими итерируемыми объектами без необходимости загрузки их в память целиком. 4. itertools.chain(): Эта функция объединяет несколько итерируемых объектов в один, что упрощает итерацию по ним как по одному объекту. 5. itertools.groupby(): Эта функция позволяет группировать элементы итерируемого объекта на основе заданного ключа. Это особенно полезно при анализе и обработке данных. И это далеко не все функции, доступные в модуле itertools. Он предоставляет множество возможностей для более эффективной итерации и манипуляции данными.
Возврат нескольких значений из функции Знаете ли вы, что можно осуществлять возврат нескольких значений из функции? Вот как это сделать. Ознакомьтесь с приведенным выше примером кода. #python
Hashtags
Понимание различий между операторами сравнения == и is Множество разработчиков сталкиваются с трудностями в отличии двух операторов сравнения: == и is, что может привести к неожиданнымошибкам в коде. Оператор ==сравнивает значения двух объектов, чтобы определить их равенство. В отличие от него, оператор isпроверяет, ссылаются ли две переменные на один и тот же объект в памяти, тем самым проверяя их идентичность. В Python из соображений эффективности происходит кэширование небольших чисел и коротких строк, что может привести к путанице и неочевиднымрезультатам при использовании этих операторов. #python
Hashtags
Красивый вывод таблиц Недавно нам понадобилось логировать часть базы данных. И тут мы вспомнили про прекрасный модуль prettytable, который позволяет красиво выводить таблицы. Итак, имена столбцов задается с помощью атрибута table.field_names. А добавлять строки с данными в таблицу можно методом table.add_row([]), передавая туда список элементов. Но даже если вы не фанат командной строки, то иногда нужно сохранить отчет о работе вашей программы в текстовый файл. В таком случае можно сохранить саму таблицу, вызвав метод table.get_string(). #трюки#prettytable
Hashtags
Publicado 21 sept
FFmpeg: Лучшее решение для обработки мультимедийных файлов FFmpeg - это бесплатная и открытая библиотека и набор инструментов для обработки мультимедийных файлов. Она предоставляет мощные возможности для работы с видео, аудио и другими мультимедийными данными. FFmpeg является одним из самых популярных и универсальных инструментов для обработки мультимедиа в мире. Для начала использования FFmpeg, вы можете установить библиотеку командой pip install ffmpeg-python. После этого, вы можете создавать собственные скрипты для обработки видео и аудио файлов, определяя нужные операции и параметры. ffmpeg-python обладает мощными возможностями для конвертации, обрезки, склеивания и многого другого. Исходный код и документация доступны тут
Применяем pathlib взамен os В Python 3 стандартная библиотека включает модуль pathlib, предоставляющий функцию Path, которая обеспечивает всенеобходимое для эффективнойработы с путями к файлам. Одно из наиболеевпечатляющихпреимуществ использования pathlib - это упрощениеработыс путями за счет использования Path вместо os.path.join, представляя болеепростой и изящный метод, как показано на изображении. В общем, этот модуль предлагает замену функциям для работы с файловыми путями из модуля os, таким как os.mkdir или os.path, на более удобные альтернативы. #path#os
Объединяем видео и аудио потоки Итак, дополнение к предыдущему посту. Из-за технологии потоковой передачи DASH (Dynamic Adaptive Streaming over HTTP), используемой youtube, мы не можем получить сразу видео в нужном качестве со звуковой дорожкой из-за ее отсутствия в потоке. В качестве решения мы можем по отдельности забрать аудио и видео и объединить с помощью утилиты ffmpeg. Для этого выбираем нужные потоки video и audio, после чего передаем url'ы в команду для инициирования создания процесса для скачивания и объединения потоков с помощью ffmpeg. #youtube
Hashtags
Универсальный парсер статей Пакет newspaper3k позволяет парсить статьи и извлекать из них заголовки, текст, дату публикации, имена авторов и много другой информации. Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные. Но точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница. Поэтому в некоторых случаях результат может отличаться от ожиданий. #парсер#newspaper3k
Hashtags
Ускоряем код с помощью векторизации Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами. Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize. По сути, vectorize преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению. #vectorize#numpy
Hashtags
Метод isspace() Метод isspace() — это строковый метод, который используется для проверки, состоит ли строка только из пробельных символов (пробелов, символов табуляции, символов новой строки и других символов, которые считаются «пробельными» в контексте языка Python). Примечание: isspace() не изменяет исходную строку, а просто возвращает булево значение в зависимости от условия. #python
Hashtags
Загрузка файлов асинхронно Если у нас есть список URL картинок для загрузки, использование простого цикла for позволит нам загрузить их последовательно, по одной за раз. Однако, для задач, включающих загрузку большогоколичества маленьких файлов, параллелизация может заметно ускорить процесс. Для параллелизации мы можем использовать ThreadPoolExecutor из модуля concurrent.futures. Этот инструмент позволяет выполнить функцию загрузки в нескольких параллельных потоках, где в конструкторе необходимо указать максимальное количество потоков для одновременного выполнения. С помощью метода .map(download, urls) можно развернуть функцию загрузки на каждый URL из списка, обеспечивая их параллельнуюобработку. Важно понимать, что так как загрузка файлов является IO-операцией, данный метод неускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего. #python#threading
Hashtags
Паттерн проектирования Singleton Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр. Метод __new__ вызывается для создания экземпляра класса, перед вызовом __init__. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса). В примере мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем. То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти. #классы#паттерны