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

Если только вы не пытаетесь подставить свою собственную реализацию и ваше переопределение преднамеренно. (Модулем верхнего уровня называется файл .ру9 который находится в одном из каталогов, включенных в путь поиска Python, а не в каком-нибудь подкаталоге, вложенном в один из этих каталогов.)

Например, в системе Windows в путь поиска Python обычно включается каталог с именем C:PythonSOLib, поэтому на этой платформе мы не должны создавать модуль с именем ЫЬ.ру, так же как модуль, имя которого совпадает с именем любого модуля из каталога C:Python30Lib. Один из способов быстро проверить, используется ли то или иное имя модуля, состоит в том, чтобы попытаться импортировать модуль.

Сделать это можно в консоли, вызвав интерпретатор с ключом -с ("execute code" - выполнить программный код), за которым следует указать инструкцию import. Если в ответ будет получено исключение ImportError, можно быть уверенным, что модуль или каталог верхнего уровня с таким именем не используется; любой другой вывод (или его отсутствие) означает наличие такого имени.

К сожалению, такой прием не дает полной гарантии, что впоследствии с этим именем не будет возникать никаких проблем, поскольку позднее мы можем установить пакет или модуль, созданный сторонним разработчиком, имеющий такое же имя, хотя на практике такая проблема возникает достаточно редко. Например, если мы создадим модуль os.py, он будет конфликтовать с библиотечным модулем os.

Но если мы создадим модуль path.py, то никаких проблем возникать не будет, поскольку этот модуль пришлось бы импортировать как модуль path, тогда как библиотечный модуль должен импортироваться как os. path. В этой книге имена файлов наших собственных модулей всегда будут начинаться с символа верхнего регистра; это позволит избежать конфликтов имен (по крайней мере в UNIX), потому что имена файлов библиотечных модулей состоят исключительно из символов нижнего регистра.
Навигация: 1 2 3
 
 
© Copyright