Делаем Java-подобный Optional в Python

В некоторых случаях использование None может превратить код в нечитаемую и неподдерживаемую кашу. К примеру, если есть необходимость отличить "пустое" значение от отсутствия значения для целочисленного ввода, когда 0 не может использоваться в качестве этого "пустого" значения, обойтись только используя None очень сложно. Одно из возможных значений использовать что-то подобное Optional из Java.

more ...

Бэктрекин без рекурсии на Python

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

more ...

Обзор курса Functional Programming Principles in Scala

Это осенью я закончил курс на Курсере "Functional Programming Principles in Scala". Этот курс - часть специализации из 5 курсов "Functional Programming in Scala." Это 6 недельное введение в функциональное программирование и Scala.

more ...

Хочется добавить тип локальной переменной? Пора делать рефакторинг!

PEP 526 добавляет начиная с Python 3.6 опциональную возможность указать тип для локальной переменной. Это более стройная замена комментариям с указанием типа. Это хорошо, но есть одна ловушка: указывание типа в питоне может скрыть проблемы в коде.

more ...

MongoDB count могут сильно замедлить API

Иногда команда фронтенда или другие потребители API просят выводить в ручках общее число объектов. Если в качестве хранилища используется MongoDB, постарайтесь избежать этого. Такое поведение ручек может значительно их замедлить.

more ...

c