Enums в Python

Опубликовано 17 February 2017 в Python • Помечено enums, python

Enums наименее используемая фича Питона. Как программисты мы предпочитаем использовать странные дикты или списки там, где мы могли бы использовать enum. По большей части это происходит из-за того, что это довольно новая фича и требуется использовать внешнюю библиотеку обратной совместимости, если используется питон версии 2.7. Тем не менее, довольно много случаев, когда использовать enum гораздо удобнее.


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

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

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

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


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

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

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

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


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

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

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

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


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

Не используйте dict так часто

Опубликовано 09 September 2016 в Python • Помечено python, dict, rest

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


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