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

Опубликовано 25 November 2016 в Python • Помечено python, java

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


Продолжить чтение

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

Опубликовано 03 November 2016 в Python • Помечено python, backtracking, recursion

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


Продолжить чтение

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

Опубликовано 24 October 2016 в Обзоры • Помечено scala, coursera, functional programming

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


Продолжить чтение

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

Опубликовано 06 October 2016 в Python • Помечено python, type hinting

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


Продолжить чтение

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

Опубликовано 23 September 2016 в Разное • Помечено mongo, api, rest

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


Продолжить чтение