Python Academy
44.6K subscribers
1.43K photos
3 videos
460 links
Python Academy — один канал вместо тысячи учебников

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

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

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Функция itertools.cycle

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

Сегодня мы бы хотели показать вам функцию cycle() из itertools. Данная функция принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элементы.

К примеру, функция cycle() из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную. Но важно при проходе при итерации по такому итератору предусмотреть выход из цикла (а не как у нас в первом случае с colors:). Так как это итератор, то мы можем использовать его для получения значений через функцию next(colors).

Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта.

#генераторы #itertools
👎5👍41
Простой, но мощный веб-фреймворк

Самым популярным фреймворком для разработки серверной части на Python является Flask. К слову, он обгоняет даже Django по звездам на GitHub.

Flask предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. А коммьюнити предоставляет множество расширений для фреймворка.

Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу http://localhost:5000/ и посмотреть результат.

#модули
👎65🔥1
Воспроизводим аудиофайлы

Для этого воспользуемся кроссплатформенным пакетом playsound, который легко устанавливается через pip.

Он содержит в себе лишь одну полезную функцию для воспроизведения аудиофайла: playsound('path/to/file.mp3')

В качестве параметра функции можно указать путь к .mp3 или .wav файлу, или вообще его url.

#audio
👎4👍31🔥1
Работаем с картинками в Python

Библиотека Pillow — это очень мощный, быстрый и удобный инструмент для обработки графики в Python.

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

Метод Image.open('resources/img/cat.jpg') считывает картинку из папки.

img.convert('L') трансформирует картинку в черно-белую.

ImageOps.invert(image) обращает цвета.

img.transpose(Image.FLIP_LEFT_RIGHT) вертикально отзеркаливает картинку.

img.save('grayscale_cat.jpg') сохранит картинку на диске.

Больше официальных примеров и документацию можно посмотреть тут.

Пример можно посмотреть тут.

#pillow
👍51👎1🔥1
Узнаём атрибуты и методы класса

С помощью dir() можно получить список всех атрибутов и методов ‌‎любого‌‎ ‌‎объекта. Может пригодиться при изучении пакетов сторонних разработчиков.
👍31👎1
memoryview()

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

memoryview() также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python.

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

#python
4👎1
Конвертируем файлы в аудио-формате

В Python мы можем решить задачу конвертации из одного аудио-формата в другой как всегда множеством способов. Наиболее приятным решением, как по мне, является использование модуля pydub, который представляет собой интерфейс-надстройку над ffmpeg.
pydub позволяет загружать, редактировать и сохранять аудио-файлы в любом формате, поддерживаемом ffmpeg.

Для загрузки файла нам нужно выбрать функцию from_ c соответствующим форматом в названии из класса AudioSegment. Также можно воспользоваться наиболее общей функцией from_file, передав путь к файлу и его формат.

Для экспорта файла с нужным форматом, в который мы хотели его сконвертировать, используем функцию export у полученного после загрузки файла объекта класса AudioSegment.

#audio #pydub
👍1👎1
Аргументы командой строки

При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле sys.

Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.

#sys
👍2👎1
Генерация капчи

Сегодня покажем создание простейшей капчи. Для этого нам понадобится модуль captcha и Pillow, который используется для создание изображений в captcha.

Все максимально просто, за нас по сути все делает уже написанный в модуле код. Создаем объект изображения ImageCaptcha, на который будет нанесен текст. После чего вызываем метод write с заданным текстом и именем файла, в который будет записано изображение.

#captcha
👎21
Модуль warnings

Модуль warnings предоставляет возможность управления предупреждениями, которые могут быть выведены во время выполнения программы.

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

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

#python
2👎1
Редактируем видео

Пакет moviepy позволяет обрезать и склеивать видео, добавлять видеоэффекты, а также редактировать звук.

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

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

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

#moviepy
👍31👎1
Режим разработки

Оказывается, еще в Python 3.7 появилась возможность запускать скрипты со специальным флагом -X для указания различных вариантов реализации.

Например, -X dev запускает скрипт в режиме разработки с функциями отладки и runtime-проверки, которые не используются по умолчанию из-за своей медлительности.

Также этот режим выводит дополнительные предупреждения в следующих случаях:

— Незакрытые файлы;
— Unawaited корутины;
— Неизвестная кодировка для str.encode;
— Проблемы с выделением памяти.

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

#python
3👎1
Отладка утечек памяти в Python приложении

Для отладки утечек памяти в Python можно использовать инструменты, такие как Memory Profiler и objgraph. Эти инструменты помогут вам выявить, какие объекты удерживают ссылки и могут вызывать утечки памяти.

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

python -m memory_profiler my_script.py


objgraph помогает визуализировать ссылки между объектами, что позволяет легко понять, какие объекты удерживают ссылки на другие объекты. Например, следующий код создаст изображение my_list.png, на котором будут показаны все объекты, на которые ссылается my_list, и все объекты, которые ссылаются на них.

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

#python #memoryprofiler #objgraph
👎1
Подключаемся к серверу по ssh

Пакет paramiko позволяет устанавливать соединение с удаленными машинами по протоколу SSH2 и производить там все те же операции, если бы вы подключались через, например, утилиту ssh на линуксе.

Использовать модуль достаточно просто, пример основный методов на картинке выше. Кстати, интересный факт, Paramiko — это сочетание слов "параноик" и "друг" на языке эсперанто.

Устанавливается пакет привычным образом через пакетный менеджер pip. А документацию можете изучить тут.

#ssh
👍3👎1
Создаем контекстный менеджер с помощью декоратора

Обычно протокол управления контекстом реализовывают с помощью класса и двух магических методов: __enter__ и __exit__. Но такой подход может показаться слегка сложным.

Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор @contextmanager из встроенного пакета contextlib.

Первая часть функции tag, которая идёт до yield, выполняется при входе в блок with. Затем исполняется сам этот блок, а после этого завершается оставшаяся часть, которая идет после yield.

 #contextlib
4👎1
PyJWT: Работаем с JSON Web Tokens в Python

PyJWT — это библиотека Python, предназначенная для кодирования, декодирования и проверки подлинности JSON Web Tokens (JWT).

JWT — это открытый стандарт (RFC 7519), который определяет компактный и независимый способ безопасной передачи информации между сторонами в виде JSON-объекта. Эта информация может быть проверена и доверена, так как она подписана цифровой подписью.

В этом примере мы создаём JWT, который содержит идентификатор пользователя и срок его действия. Затем мы декодируем и проверяем токен, чтобы убедиться, что он ещё действителен и подлинен.

#python #pyjwt
1👎1
Лето можно провести с пользой для карьеры

Т‑Банк открывает набор на оплачиваемую стажировку для студентов и выпускников, которые хотят получить опыт работы в бигтехе.

Вы сможете:

— прокачать навыки в аналитике, разработке или финансах;
— получать советы от экспертов и вливаться в профессиональную среду;
— работать из офиса в вашем городе.
Можно выбрать график от 20 до 40 часов в неделю — легко совмещать с учебой.

Стажировка длится от 3 до 6 месяцев.

Успейте подать заявку
👎1
Удаление страниц PDF-файла

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

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

#python
👎1
Как работают статические методы

Статические методы создаются в классе при помощи декоратора @staticmethod. Такие методы привязаны к классу, а не объекту — в этом и есть основное отличие.

Такой тип методов не может модифицировать ни объект, ни сам класс. То есть передавать объект или класс и прописывать self или cls в аргументах не нужно.

Обычную функцию стоит вносить в класс в качестве статического метода в том случае, когда эта функция логически относится к классу и имеет смысл там быть.

#ооп
2👎2
Быстрый deque

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

deque обеспечивает линейную сложность O(1) для операций добавления и выталкивания, у стандартного списка сложность по этим операциям O(n).

Для deque есть возможность использовать стандартные функции — sum, min, max и другие.
👍5👎1