Python академия
7.72K subscribers
2.3K photos
5 videos
267 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Объединяем видео и аудио потоки

Из-за технологии потоковой передачи DASH (Dynamic Adaptive Streaming over HTTP), используемой youtube, мы не можем получить сразу видео в нужном качестве со звуковой дорожкой из-за ее отсутствия в потоке.

В качестве решения мы можем по отдельности забрать аудио и видео и объединить с помощью утилиты ffmpeg. Для этого выбираем нужные потоки video и audio, после чего передаем url'ы в команду для инициирования создания процесса для скачивания и объединения потоков с помощью ffmpeg.

Подписывайтесь на канал 👉@pythonofff
👍7
Генераторы могут помочь при создании итераторов

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

Подписывайтесь на канал 👉@pythonofff
Задаем ширину текста

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

Как видите в примере на картинке, слова переносятся на новые строки и ничего не обрывается на полуслове.

Подписывайтесь на канал 👉@pythonofff
👍6
Работа с логическими операторами

При работе с логическими значениями Python предоставляет операторы для объединения значений с использованием стандартных понятий «и», «или» и «не». Эти операторы ожидаемо представлены словами and, or и not

Подписывайтесь на канал 👉@pythonofff
👍6
Операторы множеств

Множество — это коллекция, где все элементы уникальны. То есть одно и то же значение не может повторяться дважды.

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

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

Подписывайтесь на канал 👉@pythonofff
👍9
Выражения-генераторы — это синтаксис

Похожий на синтаксис представления списка (list comprehension), который позволяет нам создать объект-генератор.

Допустим, у нас есть представление-списка, который фильтрует пустые строки из файла и удаляет переход на новую строку в конце \n:

Подписывайтесь на канал 👉@pythonofff
👍6
Работаем с буфером обмена

Здесь всё просто: есть пакет pyperclip, который позволяют отправлять текст в буфер обмена вашего компьютера и получать его оттуда.

В этом пакете есть две основные функции — copy() и paste(), по названию которых понятно их предназначения.

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

Подписывайтесь на канал 👉@pythonofff
👍3
Выражения-генераторы — это синтаксис

Похожий на синтаксис представления списка (list comprehension), который позволяет нам создать объект-генератор.

Допустим, у нас есть представление-списка, который фильтрует пустые строки из файла и удаляет переход на новую строку в конце \n:

Подписывайтесь на канал 👉@pythonofff
👍2
Как работают статические методы

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍8
Функции-генераторы

Они отличаются от обычных функций тем, что в них есть один или несколько операторов yield

Подписывайтесь на канал 👉@pythonofff
👍5👎4
Хэширование

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

Для хэширования значений есть встроенная функция hash(). Используется она в основном для сравнения значений разных объектов — сравнивать хэши легче и выгоднее.

Но изменяемые объекты по типу списков и словарей нельзя хэшировать — интерпретатор выбросит соответствующую ошибку.

Здесь, кстати, есть две пасхалки. Хэш бесконечности равен перым цифрам числа Пи, а хэш Not a Number равен нулю.

А еще случаются коллизии: например, хэши чисел -1 и -2 одинаковы.

Подписывайтесь на канал 👉@pythonofff
👍7
Генераторы

Простой способ создания итератора.
Самый простой способ создания собственных итераторов в Python — это создание генератора.

В Python есть два способа создания генераторов.

Подписывайтесь на канал 👉@pythonofff
👍8
Ищем 100 человек, которые пройдут 4 курса по IT бесплатно и дадут обратную связь!

Старая цена - 23 500 руб
Цена для тестовой группы - 0 руб 💯

👉🏻 Получить курсы тут
🤮3🥰1
Очищаем строки

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

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

В примере видим, как символы переноса строки "n" и табуляции "t" заменяются на обычные пробелы, а символ "r" удаляется из строки полностью.

Подписывайтесь на канал 👉@pythonofff
👍9
Объектно-ориентированный итератор могут экономить панять

Процессорное время и открывать для нас новые возможности.

Давайте создадим свои собственные итераторы. Для начала мы «изобретем» заново объект итератора itertools.count.

Подписывайтесь на канал 👉@pythonofff
👍4
Выделение базовой части слов

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

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

В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.

Один за пакетов, snowball, использует алгоритм соответственно Snowball, разработанный Мартином Портером. Алгоритм поддерживает большинство популярных языков.

Подписывайтесь на канал 👉@pythonofff
👍5
Многострочные комментарии

Некоторые языки программирования, к примеру С++, предоставляют возможность создания многострочных комментариев. Для создания многострочных комментариях вы спокойно можете использовать тройные кавычки.

Подписывайтесь на канал 👉@pythonofff
👍3
Отправляем запросы с HTTPX

Интересный пакет для работы с веб-запросам. Как говорят сами разработчики, это HTTP клиент следующего поколения.

Сравнивая с привычным requests, у httpx есть следующие преимущества:

— Стандартный синхронный интерфейс, но также есть поддержка асинхронности
— Поддержка HTTP/1.1 и HTTP/2
— Возможность отправлять запросы напрямую к WSGI и ASGI приложениям
— Полная поддержка аннотаций типов
— 100% покрытие тестами

Подписывайтесь на канал 👉@pythonofff
👍5
%pinfo

Предоставляет подробную информацию об объекте, который передается вместе с ним. Она похожа на функцию object?.

В следующем фрагменте я указал простую строку “a” вместе с %pinfo, чтобы получить подробную информацию о ней.

Подписывайтесь на канал 👉@pythonofff
👍2
Именованные кортежи

Кстати, namedtuple из collections можно также использовать для хранения данных, как и классы данных, про которые я писал в предыдущем посте.

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

Функция namedtuple создает новые классы-заготовки, на основе которых уже можно создавать объекты для дальнейшего хранения данных.

В аргументы мы передаем название нового класса и список атрибутов.

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

Подписывайтесь на канал 👉@pythonofff
👍71
%matplotlib inline — это самая популярная магическая команда

Она позволяет отображать в блокнотах графики Matplotlib. Эта команда активирует интерактивную поддержку Matplotlib для блокнота Jupyter.

Подписывайтесь на канал 👉@pythonofff
👍3