388 читали · 1 год назад
Мемоизация и каррирование в Python Небольшая статья о полезных фичах питона. Мемоизация – это сохранение результатов предыдущих вычислений, которое можно использовать для ускорения кода. Для ускорения вычисления числа Фиббоначи автор вручную создаёт декоратор, являющийся аналогом functools.lru_cache. Это стратегия кэширования least recently used, то есть удаления самых старых данных. Каррирование – это техника преобразования функций, которая получила своё название в честь Хаскелла Карри. Язык Haskell тоже в его честь назвали. Вместо применения функции с N аргументами мы порождаем отдельную функцию с меньшим числом аргументов. Автор показывает каррирование и частичное применение на примерах. А мы рассмотрим свой пример. Пусть у нас есть функция оценки студентов: def add_mark(student, mark, date) Из неё можно породить функции add_mark_5(student, date) add_mark_4(student, date) add_mark_3(student, date) Зачем? Меньше писать кода и меньше пространства для ошибок, так как мы не даём поставить произвольную оценку А с помощью functools.partial мы можем ещё и динамически создавать частичные функции. Зафиксируем дату. # заменяем третий аргумент на текущую дату add_mark_today = partial(add_mark, date=datetime.datetime.now()) # теперь дату в параметры не пишем add_mark_today("Ivan", 5) Более того, дата будет одинакова для всех студентов. Если мы хотим фиксировать день сдачи, то это ровно то, что нам нужно. С ростом числа аргументов каррирование становится всё более привлекательным. Если мы хотим указать студента, группу, оценку, дату, преподавателя – то получаем монструозную функцию. Каррирование позволяет добавить гибкости за счёт создания более простых в применении функций. Если понравился пост, пожалуйста, пробивайте палец вверх:) #python
12,5 тыс читали · 1 год назад
Как написать сердечко на Python?
Добрый день! Сегодня мы разберем простое написание кода, для анимированного сердца. Для начала нам нужно прописать матем. импорт и импорт маленькой черепашки, которая нам во всём поможет. Далее мы выберем цвет и скорость нашей черепашки...