Пишете на Python или Go и хотите работать в Яндексе?
Или хотите перейти на них с другого языка программирования? Тогда приглашаем 26–27 февраля на Fast Track для бэкенд-разработчиков. На мероприятии, которое пройдет в онлайн-формате, вы сможете за пару дней получить оффер в команду, которая разрабатывает FinOps платформу Яндекса.
FinOps платформа — это внутренняя высоконагруженная финансово-операционная система, через которую проходят денежные транзакции всех сервисов Яндекса. Приходите работать с нами, задачи сложные, но действительно интересные.
Регистрируйтесь, решайте отборочный тест и до встречи 26 и 27 февраля!
Или хотите перейти на них с другого языка программирования? Тогда приглашаем 26–27 февраля на Fast Track для бэкенд-разработчиков. На мероприятии, которое пройдет в онлайн-формате, вы сможете за пару дней получить оффер в команду, которая разрабатывает FinOps платформу Яндекса.
FinOps платформа — это внутренняя высоконагруженная финансово-операционная система, через которую проходят денежные транзакции всех сервисов Яндекса. Приходите работать с нами, задачи сложные, но действительно интересные.
Регистрируйтесь, решайте отборочный тест и до встречи 26 и 27 февраля!
Воспроизводим аудиофайлы
Для этого воспользуемся кроссплатформенным пакетом playsound, который легко устанавливается через
Он содержит в себе лишь одну полезную функцию для воспроизведения аудиофайла:
В качестве параметра функции можно указать путь к
#audio
Для этого воспользуемся кроссплатформенным пакетом playsound, который легко устанавливается через
pip
. Он содержит в себе лишь одну полезную функцию для воспроизведения аудиофайла:
playsound('path/to/file.mp3')
В качестве параметра функции можно указать путь к
.mp3
или .wav
файлу, или вообще его url
. #audio
Цикл событий в Python
Цикл событий — это ядро для каждого асинхронного приложения. Он нужен для того, что бы запускать асинхронные задачи и функции обратного вызова.
Поговорим теперь о низкоуровневых методах:
Немного о методах для работы с циклами событий:
Также есть методы
Пример можете посмотреть на картинке выше. Много другого полезного вы можете прочитать в документации.
#async
Цикл событий — это ядро для каждого асинхронного приложения. Он нужен для того, что бы запускать асинхронные задачи и функции обратного вызова.
Поговорим теперь о низкоуровневых методах:
get_running_loop
— Возвращает текущий цикл событий в потоке. Если его нет, то будет RuntimeError. Может быть вызвана только с корутины или функции обратного вызова. get_event_loop
— Делает тоже самое что и функция выше, но если set_event_loop
не был вызван, то в добавок ещё закрепит новый цикл. new_event_loop
— Создает новый цикл событий. set_event_loop
— Устанавливает цикл событий для текущего потока. Немного о методах для работы с циклами событий:
run_forever
— Запускает цикл событий до тех пока stop не будет вызван. stop
— Останавливает цикл событий. Также есть методы
is_closed
и is_running
для проверки состояния. Пример можете посмотреть на картинке выше. Много другого полезного вы можете прочитать в документации.
#async
Захват экрана Windows
Существует несколько библиотек на Python для захвата экрана компьютера под управлением операционной системы Windows, но самой быстрой оказалась библиотека d3dshot.
Она использует системные библиотеки DXGI и Direct3D, чтобы обеспечить чрезвычайно быструю и надежную функциональность захвата экрана.
Её можно применить, например, в реализации игровых ботов.
Пример можно посмотреть тут.
#d3dshot
Существует несколько библиотек на Python для захвата экрана компьютера под управлением операционной системы Windows, но самой быстрой оказалась библиотека d3dshot.
Она использует системные библиотеки DXGI и Direct3D, чтобы обеспечить чрезвычайно быструю и надежную функциональность захвата экрана.
Её можно применить, например, в реализации игровых ботов.
Пример можно посмотреть тут.
#d3dshot
Генерация QR кодов
Сегодня покажем создание QR кодов. Для этого нам понадобится модуль
Все максимально просто, за нас по сути все делает уже написанный модуль.
Выше на картинке мы сделали простую функцию
За создание картинки отвечает метод
Получившийся QR код можете посмотреть тут.
#qrcode #pillow
Сегодня покажем создание QR кодов. Для этого нам понадобится модуль
qrcode
, который используется для создания изображений с QR кодом. Все максимально просто, за нас по сути все делает уже написанный модуль.
Выше на картинке мы сделали простую функцию
generate
, которая принимает какую-то информацию и название файла, в который нужно сохранить результат в виде QR кода. За создание картинки отвечает метод
qrcode.make
, который возвращает нам изображение в формате PIL.Image
, а после этого мы его сохраняем в нужном нам файле. Получившийся QR код можете посмотреть тут.
#qrcode #pillow
Работаем с картинками в Python
Библиотека Pillow — это очень мощный, быстрый и удобный инструмент для обработки графики в Python.
В сегодняшнем примере мы применим ее для конвертации картинки в черно-белую, обратим цвета, вертикально отзеркалим и сохраним в файл.
Метод
Больше официальных примеров и документацию можно посмотреть тут.
Пример можно посмотреть тут.
#pillow
Библиотека 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
Missingno
Большие грязные наборы данных и часто отсутствующие значения в них — это одна из частых проблем при работы с датасетами, и это важно отлавливать такие моменты.
Для таких целей существует Missingo — библиотека, которая имеет в себе небольшой набор простых в использовании средств для визуализации отсутствующих данных и утилит, которые позволяют быстро получить сводку полноты или отсутствия вашего набора данных.
Интерактивный пример — тут.
#Missingo
Большие грязные наборы данных и часто отсутствующие значения в них — это одна из частых проблем при работы с датасетами, и это важно отлавливать такие моменты.
Для таких целей существует Missingo — библиотека, которая имеет в себе небольшой набор простых в использовании средств для визуализации отсутствующих данных и утилит, которые позволяют быстро получить сводку полноты или отсутствия вашего набора данных.
Интерактивный пример — тут.
#Missingo
Яндекс ищет тех, кто пишет на Python или Go
А также тех, кто хочет перейти на них с другого языка программирования. Не пропустите момент и успейте зарегистрироваться на Fast Track для бэкенд-разработчиков 26–27 февраля. Отборочный этап длится до 23 февраля, спешите! На мероприятии, которое пройдет в онлайн-формате, вы сможете за пару дней получить оффер в команду, которая разрабатывает FinOps платформу Яндекса.
FinOps платформа — это внутренняя высоконагруженная финансово-операционная система, через которую проходят денежные транзакции всех сервисов Яндекса. Приходите работать с нами, задачи сложные, но действительно интересные.
Регистрируйтесь, проходите отборочный этап и до встречи 26 и 27 февраля!
А также тех, кто хочет перейти на них с другого языка программирования. Не пропустите момент и успейте зарегистрироваться на Fast Track для бэкенд-разработчиков 26–27 февраля. Отборочный этап длится до 23 февраля, спешите! На мероприятии, которое пройдет в онлайн-формате, вы сможете за пару дней получить оффер в команду, которая разрабатывает FinOps платформу Яндекса.
FinOps платформа — это внутренняя высоконагруженная финансово-операционная система, через которую проходят денежные транзакции всех сервисов Яндекса. Приходите работать с нами, задачи сложные, но действительно интересные.
Регистрируйтесь, проходите отборочный этап и до встречи 26 и 27 февраля!
Работаем с котировками акций в Python
Библиотека yfinance предоставляет мощный и удобный инструмент для получения информации с ресурса
В сегодняшнем примере применим эту библиотеку чтобы узнать цену акций Майкрософт.
Тикер Макйрософт называется "MSFT", именно его необходимо вписать в методе поиска:
— Исторические данные рынка;
— Информация по дивидентам;
— Информация о фирме (адрес, количество работников, прибыль) и т. д.
Больше подробно об этой библиотеке можно посмотреть тут.
Пример с постройкой графика истории цены на тикер тут.
#yfinance
Библиотека yfinance предоставляет мощный и удобный инструмент для получения информации с ресурса
Yahoo!
finance
в Python. В сегодняшнем примере применим эту библиотеку чтобы узнать цену акций Майкрософт.
Тикер Макйрософт называется "MSFT", именно его необходимо вписать в методе поиска:
msft = yf.Ticker("MSFT")
Цена акции находится в поле ['regularMarketPrice']
: price = msft.info['regularMarketPrice']
Кроме этого yfinance
предоставляет огромное количество такой информации о тикере как: — Исторические данные рынка;
— Информация по дивидентам;
— Информация о фирме (адрес, количество работников, прибыль) и т. д.
Больше подробно об этой библиотеке можно посмотреть тут.
Пример с постройкой графика истории цены на тикер тут.
#yfinance
Работа с ChainMap из collections
СhainMap группирует несколько словарей или других сопоставлений вместе, чтобы создать единое представление.
Иногда нам нужно сгруппировать словари в один или же работать с множеством словарей как с одним, в этом случае вам поможет ChainMap.
Немного про особенности ChainMap:
— Представляет тот же интерфейс, что и словарь, но с дополнительными возможностями;
— Создает обновляемое представление;
— Видит внешние изменения во входных отображениях.
#collections
СhainMap группирует несколько словарей или других сопоставлений вместе, чтобы создать единое представление.
Иногда нам нужно сгруппировать словари в один или же работать с множеством словарей как с одним, в этом случае вам поможет ChainMap.
Немного про особенности ChainMap:
— Представляет тот же интерфейс, что и словарь, но с дополнительными возможностями;
— Создает обновляемое представление;
— Видит внешние изменения во входных отображениях.
#collections
Counter из collections
Для отсутствующих элементов вернется 0 вместо KeyError.
Немного о методах:
#collections
Counter
— это подкласс словаря dict
. Сама коллекция нужна для хранения элементов в виде словарных ключей, а их счетчики хранятся в виде значений словаря. Для отсутствующих элементов вернется 0 вместо KeyError.
Немного о методах:
elements
— возвращает итератор по элементам, каждый из которых повторяется столько раз, сколько его количество. most_common
— возвращает список из n
наиболее распространенных элементов. #collections
Слабые ссылки
Weakref позволяет создавать слабые ссылки к объектам, но не поддерживают объект живым, если не осталось больше сильных ссылок.
Слабые ссылки нужны для организации кэшей и хеш-таблиц из тяжелых объектов, потому что в долгоживущих программах может закончится память из-за большого хранения в кэшах.
#weakref
Weakref позволяет создавать слабые ссылки к объектам, но не поддерживают объект живым, если не осталось больше сильных ссылок.
Слабые ссылки нужны для организации кэшей и хеш-таблиц из тяжелых объектов, потому что в долгоживущих программах может закончится память из-за большого хранения в кэшах.
#weakref
Рисуем графики
Графическая библиотека
В сегодняшнем примере применим эту библиотеку чтобы построить простой линейный график.
Сначала нам нужен список с данными, которые мы хотим изобразить на графике. Это может быть, например, список или
Метод
Кроме этого
— Точечные графики;
— Круговые диаграммы;
— Гистограммы;
— Тепловые карты;
— Пузырьковые диаграммы;
— И многие другие.
Больше подробно об этой библиотеке и способы ее применения можно посмотреть тут. Интерактивный пример работы с
#plotly
Графическая библиотека
plotly
позволяет создавать интерактивные качественные графики в Python. В сегодняшнем примере применим эту библиотеку чтобы построить простой линейный график.
Сначала нам нужен список с данными, которые мы хотим изобразить на графике. Это может быть, например, список или
numpy
массив: data = [1, 1.3, 2.1, 4, 3.5, 7]
Далее метод fig = px.line(y=data)
принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями. Метод
fig.show()
откроет графическое окно с изображенным графиком. Кроме этого
plotly
позволяет строить такие графики как: — Точечные графики;
— Круговые диаграммы;
— Гистограммы;
— Тепловые карты;
— Пузырьковые диаграммы;
— И многие другие.
Больше подробно об этой библиотеке и способы ее применения можно посмотреть тут. Интерактивный пример работы с
plotly
можно посмотреть тут. #plotly
Аннотации типов
Python имеет динамическую типизацию и позволяет нам оперировать переменными разных типов, и иногда у нас бывают ошибки, связанные с некорректной передачей данных неверного типа.
В современных версиях 3.6+ добавилась поддержка аннотации типов переменных, полей класса,аргументов и возвращаемых значений.
#typing
Python имеет динамическую типизацию и позволяет нам оперировать переменными разных типов, и иногда у нас бывают ошибки, связанные с некорректной передачей данных неверного типа.
В современных версиях 3.6+ добавилась поддержка аннотации типов переменных, полей класса,аргументов и возвращаемых значений.
#typing
Управление версиями Python
Инструмент pyenv позволяет легко переключаться между несколькими версиями Python. Он прост в использовании и следует лучшим традициям UNIX, где каждая утилита хорошо выполняет одну свою задачу.
Вкратце, основной функционал
— Позволяет изменять глобальную версию Python для каждого пользователя;
— Обеспечивает поддержку версий Python для каждого проекта;
— Позволяет переопределить версию Python с помощью переменной окружения;
— Выполняет поиск команд из нескольких версий Python одновременно.
Кстати, этот проект основан на rbenv и ruby-build и модифицирован для Python.
#pyenv
Инструмент pyenv позволяет легко переключаться между несколькими версиями Python. Он прост в использовании и следует лучшим традициям UNIX, где каждая утилита хорошо выполняет одну свою задачу.
Вкратце, основной функционал
pyenv
выглядит так: — Позволяет изменять глобальную версию Python для каждого пользователя;
— Обеспечивает поддержку версий Python для каждого проекта;
— Позволяет переопределить версию Python с помощью переменной окружения;
— Выполняет поиск команд из нескольких версий Python одновременно.
Кстати, этот проект основан на rbenv и ruby-build и модифицирован для Python.
#pyenv
Обработка исключений
Исключения — это тип данных, который нужен для того, что бы сообщать нам об ошибках.
Существует базовое исключение
В блоке
Стоит учесть, что мы можем делать бесконечное количество вложенных блоков.
Грамотным способом является вылавливать только те исключения, которые мы ожидаем.
#exceptions
Исключения — это тип данных, который нужен для того, что бы сообщать нам об ошибках.
Существует базовое исключение
BaseException
от которого наследуются все остальные исключения. В блоке
try
мы выполняем инструкцию, которая может породить исключение, а в блоке except
мы ловим ошибки и делаем свои операции.Стоит учесть, что мы можем делать бесконечное количество вложенных блоков.
Грамотным способом является вылавливать только те исключения, которые мы ожидаем.
#exceptions
Получаем метаданные из аудиофайла
Для извлечения метаданных из аудиофайлов, а также их редактирования есть очень удобный модуль
Модуль поддерживает форматы метаданных
#audio #mutagen
Для извлечения метаданных из аудиофайлов, а также их редактирования есть очень удобный модуль
mutagen
. Модуль позволяет получить всю основную информацию об аудиофайле: длину, битрейт, исполнителя и так далее. Модуль поддерживает форматы метаданных
APEv2
и ID3v2
, анализируя все кадры ID3v2.4
(посмотреть все нужные теги ID3v2
можно тут). #audio #mutagen
Получаем и задаем лимит рекурсии
В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает
Но с помощью модуля
И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.
#рекурсия #лимиты
В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает
RecursionError
во время создания рекурсивных алгоритмов. Но с помощью модуля
sys
можно посмотреть и даже изменить максимальную глубину рекурсии. Хотя делать это слегка опасно, так как каждый новый вызов занимает много памяти. И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.
#рекурсия #лимиты
Wikipedia в Python
В случае, если вам не хватает прошлого
Устанавливается этот модуль через пакетный менеджер
#модули #wikipedia
В случае, если вам не хватает прошлого
howdoi
, можете взглянуть на модуль, который обращается к API Википедии. Устанавливается этот модуль через пакетный менеджер
pip
. А использовать его можно без всяких трудностей – всё самое важное показано на картинке.#модули #wikipedia