Когда на самом деле Python выполняет декораторы?

Когда на самом деле Python выполняет декораторы?

Главное свойство декораторов – то, что они выполняются сразу после определения декорируемой функции. Обычно на этапе импорта то есть когда Python загружает модуль. Continue reading

Все, что нужно знать о байтах в Python

Все, что нужно знать о байтах в Python

Новые типы двоичных последовательностей во многих отношениях похожи на тип str в Python 2. Главное что нужно знать – это то, что существуют два основных встроенных типа двоичных последовательностей: неизменяемый тип bytes, появившийся в Python 3, и изменяемый тип bytearray, добавленный в Python 2.6.

Кстати, в Python 2.6 был также введен тип bytes, но лишь как псевдоним типа str, он ведет себя иначе, чем тип bytes в Python 3.

Каждый элемент bytes или bytearray – целое число от 0 до 255, а не односимвольная строка, как в типе str в Python 2 str. Continue reading

Обработка отсутствия ключей в Python с помощью setdefault

Обработка отсутствия ключей в Python с помощью setdefault

В полном соответствии с философией “быстрого прекращения” доступ к словарю dict с помощью конструкции d[k] возбуждает исключение, если ключ k отсутствует.

Любой питонист знает об альтернативной конструкции d.get(k, default), которая применяется вместо d[k], если иметь значение по умолчанию удобнее, чем обрабатывать исключение KeyError.

Однако если нужно обновить найденное значение (при условии, что оно изменяемое), то и __getitem__, и get оказываются неудобны и неэффективны.

В примере №1 показан неоптимальный скрипт, демонстрирующий одну ситуацию, когда dict.get – не лучший способ обработки отсутствия ключа. Continue reading