Рисуем графики
Графическая библиотека
В сегодняшнем примере применим эту библиотеку чтобы построить простой линейный график.
Сначала нам нужен список с данными, которые мы хотим изобразить на графике. Это может быть, например, список или
Метод
Кроме этого
— Точечные графики;
— Круговые диаграммы;
— Гистограммы;
— Тепловые карты;
— Пузырьковые диаграммы;
— И многие другие.
Больше подробно об этой библиотеке и способы ее применения можно посмотреть тут. Интерактивный пример работы с
#plotly
Графическая библиотека
plotly позволяет создавать интерактивные качественные графики в Python. В сегодняшнем примере применим эту библиотеку чтобы построить простой линейный график.
Сначала нам нужен список с данными, которые мы хотим изобразить на графике. Это может быть, например, список или
numpy массив: data = [1, 1.3, 2.1, 4, 3.5, 7]
Далее метод fig = px.line(y=data) принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями. Метод
fig.show() откроет графическое окно с изображенным графиком. Кроме этого
plotly позволяет строить такие графики как: — Точечные графики;
— Круговые диаграммы;
— Гистограммы;
— Тепловые карты;
— Пузырьковые диаграммы;
— И многие другие.
Больше подробно об этой библиотеке и способы ее применения можно посмотреть тут. Интерактивный пример работы с
plotly можно посмотреть тут. #plotly
❤4👍1
Цикл событий в 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
❤4👍3
Яндекс ищет начинающих и опытных разработчиков
Работа в Яндексе — это возможность совмещать науку и бизнес и создавать полезные продукты для миллионов пользователей. Сейчас компания проводит Week Offer Backend*, где можно пройти все этапы отбора и получить офер всего за неделю.
Кого ищут:
• Бэкенд-разработчиков с опытом от 4 лет на C++, Python, Java/Kotlin и Go**
• Стажёров-разработчиков с базой по алгоритмам и структурам данных и навыками кодинга на C++, Python, Java/Kotlin и Go**
Формат простой. Участвуете в наймовом мероприятии, проходите собеседования онлайн и получаете офер или приглашение на оплачиваемую стажировку.
Даты проведения:
• 11–17 апреля для опытных бэкендеров
• 13–17 апреля для стажёров
Все этапы проходят онлайн. Подробности и регистрация по ссылке.
Работа в Яндексе — это возможность совмещать науку и бизнес и создавать полезные продукты для миллионов пользователей. Сейчас компания проводит Week Offer Backend*, где можно пройти все этапы отбора и получить офер всего за неделю.
Кого ищут:
• Бэкенд-разработчиков с опытом от 4 лет на C++, Python, Java/Kotlin и Go**
• Стажёров-разработчиков с базой по алгоритмам и структурам данных и навыками кодинга на C++, Python, Java/Kotlin и Go**
Формат простой. Участвуете в наймовом мероприятии, проходите собеседования онлайн и получаете офер или приглашение на оплачиваемую стажировку.
Даты проведения:
• 11–17 апреля для опытных бэкендеров
• 13–17 апреля для стажёров
Все этапы проходят онлайн. Подробности и регистрация по ссылке.
👎2❤1👍1
Захват экрана Windows
Существует несколько библиотек на Python для захвата экрана компьютера под управлением операционной системы Windows, но самой быстрой оказалась библиотека d3dshot.
Она использует системные библиотеки DXGI и Direct3D, чтобы обеспечить чрезвычайно быструю и надежную функциональность захвата экрана.
Её можно применить, например, в реализации игровых ботов.
Пример можно посмотреть тут.
#d3dshot
Существует несколько библиотек на Python для захвата экрана компьютера под управлением операционной системы Windows, но самой быстрой оказалась библиотека d3dshot.
Она использует системные библиотеки DXGI и Direct3D, чтобы обеспечить чрезвычайно быструю и надежную функциональность захвата экрана.
Её можно применить, например, в реализации игровых ботов.
Пример можно посмотреть тут.
#d3dshot
👍4
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
В примере мы проверяем, есть ли значение у атрибута
То есть при вызове конструктора класса
#классы #паттерны
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
__new__ вызывается для создания экземпляра класса, перед вызовом __init__. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).В примере мы проверяем, есть ли значение у атрибута
instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.То есть при вызове конструктора класса
Singleton, будет возвращаться один и тот же объект из памяти.#классы #паттерны
❤3👍2
Как за 2 года стать разработчиком, за которого конкурируют компании?
8 апреля ИТМО в партнёрстве с Яндекс Практикумом проведут День открытых дверей онлайн-магистратуры «Фронтенд- и бэкенд-разработка».
Поговорим про фронтенд и бэкенд, разницу между ними и уровень знаний на старте. Обсудим, какие навыки нужны для поступления, как магистратура помогает быстрее выйти на рынок — и быть на нём конкурентоспособным.
Отдельно разберём сценарии для тех, кто уже работает в IT: как сменить стек, углубиться в текущий или перейти в новые направления, включая работу с ИИ.
На встрече обсудят:
• какой трек выбрать и как выстроить карьеру в разработке
• какую роль играет ИИ в программировании
• как устроена программа и чему вы научитесь
• как проходит обучение и как его совмещать с работой
• как поступить: вступительные испытания и ключевые даты
Подключайтесь онлайн 8 апреля в 19:00 мск.
Зарегистрироваться на ДОД
8 апреля ИТМО в партнёрстве с Яндекс Практикумом проведут День открытых дверей онлайн-магистратуры «Фронтенд- и бэкенд-разработка».
Поговорим про фронтенд и бэкенд, разницу между ними и уровень знаний на старте. Обсудим, какие навыки нужны для поступления, как магистратура помогает быстрее выйти на рынок — и быть на нём конкурентоспособным.
Отдельно разберём сценарии для тех, кто уже работает в IT: как сменить стек, углубиться в текущий или перейти в новые направления, включая работу с ИИ.
На встрече обсудят:
• какой трек выбрать и как выстроить карьеру в разработке
• какую роль играет ИИ в программировании
• как устроена программа и чему вы научитесь
• как проходит обучение и как его совмещать с работой
• как поступить: вступительные испытания и ключевые даты
Подключайтесь онлайн 8 апреля в 19:00 мск.
Зарегистрироваться на ДОД
❤2👍2🔥1😱1
Тестирование на pytest
Но при разработке на
Также он поддерживает запуск тестов на
#python #pytest #assert
pytest — ближе по духу к языку Python нежели unittest, которая накладывает определенные обязательства при разработке тестов. Например, создание классов-наследников от TestCase или выполнение определенной процедуры запуска тестов. Но при разработке на
pytest ничего этого делать не нужно. Вы просто пишете функции, которые должны начинаться с "test_" и используете assert, встроенные в Python. Также он поддерживает запуск тестов на
unittest и nose, то есть полная обратная совместимость с ними.#python #pytest #assert
👍2❤1
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Decimal, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction, который представляет и хранит число в виде рациональной дроби.#числа #fraction
❤5👍2
Поверхностное копирование
Копирование объектов может быть «поверхностное» (shallow) или «глубокое» (deep). Различия между ними заключаются в том, как обрабатываются вложенные объекты.
При поверхностном копировании создается новый объект, но его внутренние элементы (если они тоже являются объектами) остаются ссылками на те же объекты, что и в оригинале. Другими словами, копируются только ссылки на объекты, но не сами объекты.
#python
Копирование объектов может быть «поверхностное» (shallow) или «глубокое» (deep). Различия между ними заключаются в том, как обрабатываются вложенные объекты.
При поверхностном копировании создается новый объект, но его внутренние элементы (если они тоже являются объектами) остаются ссылками на те же объекты, что и в оригинале. Другими словами, копируются только ссылки на объекты, но не сами объекты.
#python
❤5
Получение аудиопотока с микрофона
Библиотека
В приведенном примере мы создаем объект класса
Данный объект потока позволяет считывать с устройства с помощью метода
В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл
#pyaudio #audio
Библиотека
PyAudio предоставляет возможности для записи аудиопотока с различных устройств. PyAudio работает посредством кросс-платформенной библиотеки PortAudio (поэтому необходимо заранее установить пакет разработки portaudio19-dev).В приведенном примере мы создаем объект класса
PyAudio и открываем поток с рядом констант для настройки аудиопотока, поступающего с микрофона (для выбора другого устройства нужно передать его номер в качестве аргумента input_device_index). Данный объект потока позволяет считывать с устройства с помощью метода
stream.read(). Полученную информацию мы можем использовать для дальнейшего анализа и модификации. В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл
wav. #pyaudio #audio
👍3
Превью из длинного текста
Допустим, у нас есть какой-то длинный текст в виде строки и надо сделать превью этого текста, например, для сайта. Первое, что приходит на ум – использовать слайсинг строк.
Но, как видите, текст оборвался на полуслове, поэтому такой вариант отпадает. Такую проблему хорошо решает метод
Первым аргументом передается строка, вторым указываем количество символов, которое должен содержать результат. Также третьим аргументом можно передать заготовку, которая будет вставляться в конце обрезанной строки.
#строки #textwrap
Допустим, у нас есть какой-то длинный текст в виде строки и надо сделать превью этого текста, например, для сайта. Первое, что приходит на ум – использовать слайсинг строк.
Но, как видите, текст оборвался на полуслове, поэтому такой вариант отпадает. Такую проблему хорошо решает метод
shorten из модуля textwrap. Первым аргументом передается строка, вторым указываем количество символов, которое должен содержать результат. Также третьим аргументом можно передать заготовку, которая будет вставляться в конце обрезанной строки.
#строки #textwrap
👍4
Инкремент с помощью __pos__
В Python нет операции инкремента
При применении унарного плюса у объекта вызывается магический метод
Код на картинке может показаться сначала немного сложным, но лучше проследить логику и понять работу метода
#магические_методы #__pos__
В Python нет операции инкремента
++ как в си-подобных языках, поэтому используется x += 1. Однако запись ++x является валидным кодом (но не x++), так как это просто два унарных оператора сложения.При применении унарного плюса у объекта вызывается магический метод
__pos__, то есть запись ++x можно понять как x.__pos__().__pos__(). Зная это, можно реализовать класс, который будет представлять число и поддерживать поведение инкремента.Код на картинке может показаться сначала немного сложным, но лучше проследить логику и понять работу метода
__pos__. Если реализовать все остальные необходимо магические методы, то может получится полноценный класс числа, но в продакшне такие приколы лучше не писать.#магические_методы #__pos__
👍4
Время исполнения кода
Иногда приходится выбирать между несколькими вариантами кода, и часто отталкиваются от его скорости. Пример вычисления времени исполнения кода мы сейчас и покажем.
Всё достаточно просто: с помощью модуля
Если будете использовать этот пример, то просто вставьте свой код вместо комментария.
#трюки #time
Иногда приходится выбирать между несколькими вариантами кода, и часто отталкиваются от его скорости. Пример вычисления времени исполнения кода мы сейчас и покажем.
Всё достаточно просто: с помощью модуля
time запоминаем начальное время, выполняем основной код, узнаём конечное время и просто высчитываем разницу. Если будете использовать этот пример, то просто вставьте свой код вместо комментария.
#трюки #time
❤1
Используйте dict.get() вместо dict[]
Есть несколько способов получения значений из словарей, и даже по такой теме разработчики часто спорят.
Многие получают значения по ключам через квадратные скобки, но если такого ключа нет, то будет вызвано исключение.
Поэтому мы считаем, что лучше использовать метод
Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.
В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.
#словари
Есть несколько способов получения значений из словарей, и даже по такой теме разработчики часто спорят.
Многие получают значения по ключам через квадратные скобки, но если такого ключа нет, то будет вызвано исключение.
Поэтому мы считаем, что лучше использовать метод
get у словарей. Его основной плюс заключается в том, что он принимает опциональный аргумент, отвечающий за значение по умолчанию. Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.
В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.
#словари
Зачем использовать pdb
Этот модуль обладает интерфейсом командной строки, с помощью которого можно управлять выполнением кода на Python в реальном времени. Чтобы активировать режим
#python #pdb
pdb — это интерактивный отладчик Python, который позволяет пользователю управлять выполнением программы: перемещаться по коду, просматривать и изменять значения переменных, пошагово проходить через код, включая вложенные структуры, устанавливать точки остановок и выполнять другие типичные действия для отладки.Этот модуль обладает интерфейсом командной строки, с помощью которого можно управлять выполнением кода на Python в реальном времени. Чтобы активировать режим
pdb в вашей программе, достаточно добавить следующую строку кода.#python #pdb
❤2
Автоматизируем браузер с Pyppeteer
Пример использования
#python #pyppeteer
Pyppeteer — это Python-библиотека, позволяющая управлять браузером с помощью инструмента Puppeteer, изначально разработанного для Node.js. Puppeteer предоставляет возможность автоматизировать взаимодействие с веб-страницами, выполнять сценарии на основе браузера, делать скриншоты, создавать PDF-файлы и многое другое.Пример использования
Pyppeteer для выполнения поиска в Google и сохранения результатов в виде скриншота доступен на фото.#python #pyppeteer
❤3👍3👎1