«Сломанный» set

Вопрос: может ли set содержать два одинаковых объекта? Ответ: да, запросто! Делаем класс: Как это? set запоминает хэш объекта при вставке, а потом не следит за тем, меняется ли как-то объект или нет, это было бы очень накладно. Изначально мы вставляли 20, но потом уже поменяли его на 30, тем самым сломав set. «Починить» такой…

Библиотека schedule – CRON на Python

Вам приходилось работать с CRON? Это такой сервис в nix-системах, который позволяет регулярно в определенные моменты времени запускать скрипты или программы. Штука с долгой историей, в наследство которой достался странный синтаксис для описания правил: Что если бы мы хотели иметь свой CRON внутри программы Python, чтобы в нужные моменты времени вызывать функции? Да еще, чтобы…

Munch – вседозволенный объект

Привет. Хочу познакомить вас библиотекой Munch, которая является форком более старой библиотеки Bunch. Рассмотрим суть проблемы, которую она решает. Задать атрибуты объекта, не описывая их по одному в конструкторе. Легче понять на примере: Видно, что object нам не поможет. Но в Python 3 можно сделать пустой класс, это не вызовет ошибки: И в принципе этого…

Короткое замыкание

Поговорим о логических операциях. Допустим у нас есть цепочка из or:  Чтобы print сработал, нужно, чтобы хотя бы один из трех вызовов давал бы True (или приводился к True). Что если x() сразу вернет True? Тогда, очевидно, все выражение будет равняться True в любом случае и независимо от того, что будет в y() и z().…

​​Анимация Jupyter Notebook

Сегодня мы будем анимировать график прямо внутри Jupyter Notebook. Сперва сделаем плавную отрисовку графика. Переключим режим отображения графиков в notebook: Импортируем все, что нужно: Сгенерируем наши данные: Создадим пустой график: Функция animate будет вызываться при отрисовка каждого кадра, аргумент i – номер кадра: Запускаем анимацию: Если мы хотим анимировать сами данные, например, заставить синусоиду «плясать»,…