Python Academy
52.8K subscribers
1.03K photos
7 videos
414 links
Python Academy — один канал вместо тысячи учебников

Чат канала: @python_academy_chat

Сотрудничество: @Feel_focus

Рекламодателям: bit.ly/3y1Py4
Download Telegram
VisPy

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

После установки библиотеки, вы можете создать графические приложения с использованием VisPy. В примере на картинке создается окно с красным треугольником. VisPy предоставляет широкие возможности для создания 2D и 3D визуализаций, а также возможность работы с пользовательским вводом, анимациями и интерактивностью.

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

#python
Web2py

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

#python
Возврат нескольких значений из функции

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

#python
Функция itertools.chain()

Функция itertools.chain() в Python объединяет несколько итераторов в один. Она принимает в качестве аргумента один или несколько итераторов, и возвращает итератор, который последовательно возвращает элементы из этих итераторов.

Например, код сверху объединяет две строки в одну.

#python
Метод setdefault()

Метод setdefault() в Python возвращает значение по указанному ключу из словаря. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.

Метод setdefault() имеет два параметра:

— Ключ, по которому необходимо получить значение.
— Значение по умолчанию, которое будет добавлено в словарь, если ключ отсутствует.

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

#python
Узнаем заряд батареи компьютера с помощью Python

Данный код сначала получает объект battery с помощью функции psutil.sensors_battery(), которая предоставляет информацию о состоянии батареи компьютера. Затем он проверяет, подключена ли зарядка, с помощью свойства power_plugged.

#python #psutil
Скачиваем видео с YouTube

Пакет pytube предоставляет всю небходимую функциональность для скачивания видео с YouTube, а также для сбора всей информации о нем.

Для работы нам необходимо создать объект класса YouTube. Помимо ссылки на видео в конструктор можно передать в качестве параметров функции для обработки прогресса загрузки и завершения.

Большинство видео на ютубе не имеют аудиодорожки на потоках с высоким разрешением, свыше 720p — это связано с технологией передачи DASH, которую использует YouTube.

На картинке мы показали как отфильтровать потоки с прогрессивной передачей и выбрать из полученного списка с максимальным доступным разрешением до 720p.

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

#python #youtube
Получаем календарь

В модуле calendar есть функция month(), которая вернет календарь указанного месяца в виде строки, как показано в примере. А функция calendar() выдаст целый год.

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

Кстати, модуль является встроенным, отдельно его устанавливать не нужно.

#python #calendar
Библиотека для генерации рандомных данных

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

Этот код сгенерирует случайные адресные данные, такие как название города, улицы, номер дома и координаты.

#python #mimesis
Удаление страниц PDF-файла

Библиотека PyMuPDF включает в себя довольно много сложных методов, которые упрощают удаление страниц из файла PDF. Он позволяет указать либо одну страницу (используя метод deletePage()), либо диапазон номеров страниц (используя метод deletePageRange()), либо список с номерами страниц (используя метод select()).

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

#python
Функция reload()

Функция reload() в Python перезагружает ранее импортированный модуль. Это означает, что код модуля выполняется заново, и любые изменения в модуле становятся доступными.

Функция reload() принимает в качестве аргумента объект модуля. Этот объект должен быть ранее импортированным модулем.

#python
Сравнение двух аудиосообщений с использованием библиотеки Librosa

Librosa — библиотека, которая обеспечивает анализ и обработку звука. Сравнение производится путем вычисления характеристик MFCC (Mel Frequency Cepstral Coefficients), описывающих звуковую сигнатуру каждого аудио.

Важные замечания:
— Для точного сравнения аудиозаписей они должны иметь одинаковую продолжительность и аналогичные условия записи (громкость, уровень шума и т.д.).
Возможно потребуется дополнительная предварительная обработка, например, нормализация громкости.

#python #librosa
Распаковывание последовательностей при неизвестном числе элементов

Для указанного в подзаголовке случая в Python 3 есть оператор звездочки – расширенная операция распаковывания последовательности. Переменной со звездочкой присваивается часть списка, содержащая все неприсвоенные элементы, соответствующие этой позиции.

#python
Разница между генераторными выражениями и генераторами коллекций

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

Распечатав переменные, можно заметить, что значением переменной a является список, а переменная x хранит в себе объект генератора. И здесь возникает вопрос, что же использовать.

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

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

#python
Декоратор override

@override используется для переопределения методов в классах-наследниках. Он позволяет указать, что метод в подклассе переопределяет метод базового класса.

Это может быть полезно для:

— Повышения читабельности кода, так как сразу видно, какие методы переопределены.

— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.

— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.

#python #decorators
Генераторы коллекций

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

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

#python
Асинхронно скачиваем файлы

Имея список ссылок на картинки, которые нужно скачать, мы можем это сделать используя простой цикл for, тем самым скачав их последовательно одна за одной.

Но в таких ситуациях как эта (скачивание огромного количества небольших файлов) распараллеливание задачи существенно ускорит процесс.

Для этого воспользуемся функцией ThreadPoolExecutor из стандартного пакета concurrent.futures. Она позволяет запустить нашу функцию, в нескольких екземплярах в параллельных потоках. В конструкторе необходимо указать максимальное количество потоков, которые будут одновременно запущены.

Далее метод .map(download, urls) создает екземпляры нашей функции для скачивания файла, и раскидывает в них элементы списка urls.

Но будьте внимательны: так как скачивание файла — это IO-операция, такой метод не ускоряет вычисления кода. Он лишь позволяет запустить скачивание следующего файла, не дождавшись пока скачается предыдущий.

#python #threading
Создание скриншотов с использованием модуля pyscreenshot

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

Для захвата изображения используется метод grab, для его отображения – show, а для сохранения – save. В метод grab можно также передать аргумент bbox, чтобы ограничить захват только определенной областью экрана.

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

#python #pyscreenshot
Получение срезов итераторов

Если вы попытаетесь получить срез итератора, то столкнётесь с ошибкой TypeError, сообщающей о том, что на объект-генератор нельзя оформить подписку. Однако эта проблема поддаётся решению (см картинку).

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

#python
Познакомьтесь с 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