Генераторы словарей и модули Рython
Функции в языке Python Функции в языке PythonВсе функции в языке Python возвращают какое-либо значение, хотя вполне возможно (и часто так и делается) просто игнорировать это значение. Возвращаемое значение может быть единственным значением или кортежем значений,...
Реализация генераторов Реализация генераторовМы рассмотрели коллекции-последовательности, tuple, collections, na-medtuple и list, поддерживающие, как и строки, возможность извлечения срезов. Также было рассмотрено использование оператора распаковывания...
Парсинг документов XML Парсинг документов XMLXML: Для парсинга документов XML широко используются два основных подхода. Один из них основан на анализе DOM (Document Object Model -объектная модель документа), а другой - на использовании SAX (Simple API for XML - упрощенный...
Копирование коллекций Копирование коллекцийКопирование коллекций: Поскольку в языке Python повсюду используются ссылки на объекты, когда выполняется оператор присваивания (=), никакого копирования данных на самом деле не происходит. Если справа от оператора находится литерал,...
Функция char_at
Функция char_at - одна из тех, что предоставляется этим модулем; она возвращает символ в заданной позиции строки и столбца сетки. Реализация функции начинается с той же проверки длины аргумента char, которая производилась и в функции resize . Вместо того чтобы явно проверять аргументы с номерами строки и столбцов, функция работает в предположении, что аргументы имеют допустимые значения.

Если из-за обращения к несуществующей строке или столбцу возбуждается исключение IndexError, функция перехватывает его и возбуждает соответствующее исключение, характерное для модуля. Такой стиль программирования соответствует выражению "проще попросить прощения, чем разрешения" и считается более свойственным программированию на языке Python, чем стиль "осмотрись, прежде чем прыгнуть", при котором проверки выполняются заранее.

Реализация с опорой на исключения вместо предварительной проверки является более эффективной, когда исключения возникают достаточно редко. (Контрольные инструкции assert мы не относим к стилю "осмотрись, прежде чем прыгнуть", потому что такие ошибки никогда не должны возникать и они часто убираются из окончательной версии программного кода.) Этот вызов инициализирует сетку с размерами по умолчанию (25x80), чем обеспечивает безопасное использование модуля в импортирующем программном коде.

Без этого вызова импортирующая программа или модуль должны были бы явно вызывать функцию resizeO для инициализации сетки, что вынуждало бы программистов помнить об этом факте и приводило бы к множественным попыткам инициализации. Последние три строки в модуле являются обычными для модулей, использующих модуль doctest для выполнения доктестов. Модуль CharGrid имеет один существенный недостаток: он поддерживает только одну сетку символов.

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

Дополнительное преимущество реализации на основе класса заключается в том, что мы можем отказаться от использования инструкции global, сохраняя данные в виде атрибутов (статических элементов) класса. Обзор стандартной библиотеки языка Python: Стандартная библиотека языка Python обычно описывается, как "батарейки, входящие в комплект поставки", и обеспечивает доступ к широкому кругу функциональных возможностей, насчитывая в своем составе свыше 200 пакетов и модулей.
Навигация: 1 2 3
 
 
© Copyright