Когда на самом деле 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

Обращения к атрибутам: __getattr__ и __setattr__ в Python

Метод __getattr__ выполняет операцию получения ссылки на атрибут. Если говорить более определенно, он вызывается с именем атрибута в виде строки всякий раз, когда обнаруживается попытка получить ссылку на неопределенный(несуществующий) атрибут.

Этот метод не вызывается, если интерпретатор может обнаружить атрибут посредством выполнения процедуры поиска в дереве наследования. Вследствие этого метод __getattr__ удобно использовать для обобщенной обработки запросов к атрибутам. Например: Continue reading

Операция вызова: __call__ в Python

Метод __call__ вызывается при обращении к экземпляру как к функции. Это не повторяющееся определение — если метод __call__ присутствует, интерпретатор будет вызвать его, когда экземпляр вызывается как функция, передавая ему любые позиционные и именованные аргументы:

Выражаясь более формальным языком, метод __call__ поддерживает все схемы передачи аргументов. Все что передается экземпляру, передается этому методу наряду с обычным аргументом self, в котором передается сам экземпляр. Например, следующие определения метода: Continue reading

Кодирование строк символов ASCII в Python

Рассмотрим несколько примеров, демонстрирующих основы кодирования строк в Python. Строки символов ASCII являются простейшей разновидностью строк символов Юникода, которые хранятся как последовательности байтов, представляющих символы: Continue reading

Модуль cgi Python

В модуле cgi предусмотрен основной класс FieldStorage, который выполняет всю работу. Этот класс считывает всю необходимую информацию о пользователе, передаваемую веб-клиентом (через веб-сервер), поэтому экземпляр этого класса дол­жен быть создан сразу после запуска сценария CGI на языке Python.

Экземпляр ука­занного класса включает объект, напоминающий словарь, который содержит набор пар «ключ значение». Ключами являются имена элементов ввода, передаваемых из заполненной формы. Значения содержат соответствующие данные. Continue reading

Введение в интерфейс CGI Python

Изначально веб разрабатывался как глобальный оперативный репозитарий, или архив документов (главным образом для образовательных и научных учреждений). При этом информация в основном была представлена в текстовой форме, как прави­ло, с разметкой НТМL.

Язык НТМL можно рассматривать как инструмент форматирования текста, позво­ляющий задавать шрифты, размеры и стили. Основной особенностью НТМL явля­ется поддержка гипертекста. Под этим подразумевается возможность использовать определенный текст (обычно как-то выделенный) или даже графические элементы в качестве ссылок, указывающих на другие документы или на места в Интернете и в веб, которые связаны с контекстом оригинала.

Для доступа к документу достаточно щелкнуть кнопкой мыши или воспользоваться другим механизмом выделения содер­жимого, предназначенным для пользователей. Документы HTML являются статиче­скими, хранятся на веб-сервере и передаются клиентам по требованию. Continue reading

Шифрование строк с помощью модуля hashlib Python

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

Модуль предоставляет следующие функции: md5(), sha1(), sha224(), sha256(), sha384 и sha512(). В качестве необязательного параметра функциям можно передать шифруемую последовательность байтов. Например: Continue reading

Тип данных bytearray Python

Тип данных bytearray является разновидностью типа bytes и поддерживает те же самые методы и операции. В отличие от типа bytes, тип bytearray допускает возможность непо­средственного изменения объекта и содержит дополнительные методы, позволяющие вы­полнять эти изменения.

Создать объект типа bytearray можно следующими способами:

С помощью функции bytearray([<Строка>, <Кодировка>[, <Обработка ошибок>]]). Если параметры не указаны, то возвращается пустой объект. Чтобы преобразовать строку в объект типа bytearray, необходимо передать минимум два первых параметра. Если строка указана только в первом параметре, то возбуждается исключение TypeError. Continue reading