Главная » Просмотр файлов » Лутц М. - Изучаем Python

Лутц М. - Изучаем Python (1077325), страница 113

Файл №1077325 Лутц М. - Изучаем Python (Лутц М. - Изучаем Python) 113 страницаЛутц М. - Изучаем Python (1077325) страница 1132018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 113)

Все файлы программы вызывают инструкцию !врос! ош1111вз для загрузки и использования общего программного кода. Программа распространяется в виде единого архива в формате лаг или .г1р, содержащего все файлы программы, и при установке все файлы распаковываются в единственный каталог с именем зуз1ет1: зузтеа!'1 цтт1т11ез.ру азтп,ру отПЕг ру а Обаие зспоиогзтельные функции, классы з Этот файл запускает прогрзииу а Иипортирует и использует иодуль оШттзез Буз1еа21 отт!!11ез ру аа1п.

ру отлет.ру а Обиие аспоиогательние функции З Этот файл запускает прогрзииу з иипортирует иодуль цшы1еа Пока что никаких явных проблем не наблюдается: обе программы прекрасно сосуществуют и работают на одной и той же машине. Фактиче- Теперь предположим, что другой программист разработал другую программу, в которой также имеются файлы иШМез.ру и та1п.ру, и также используется инструкция твротг о1!111!ев во всех файлах программы для загрузки общего программного кода.

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

Например, если запускается файл зузгет1тта1н.ру, все операции импортирования сначала будут просматривать каталог зуз1ет1. Точно так же при запуске файла зувтет2'гтат.ру в первую очередь будет просматриваться каталог зузгет2. Не забывайте, что настраивать путь поиска модулей необходимо только при необходимости импортировать модули из разных каталогов.

А теперь предположим, что после установки этих двух программ вы решили использовать вспомогательные функции из обоих файлов игШ11ез.ру в своей собственной программе. В конце концов, это обычный вспомогательный программный код, а для программного кода на языке Ру1Ьоп вполне естественно, когда он используется многократно. В такой ситуации вам необходима возможность из своего программного кода, хранящегося в третьем каталоге, загрузить один из двух файлов: трог1 Лт111тев о1!1!1!ее.торс('врез') Теперь проблема начинает вырисовываться. Чтобы вообще выполнить эту работу, вам придется включить в путь поиска модулей каталоги, содержащие файлы и!1111!ее.ру. Но какой каталог поместить первым— вуз1ет1 или зуз1ет2? Проблема заключается в линейной природе пути поиска. Он всегда просматривается слева направо.

Независимо от того, как долго вы будете ломать голову над этой проблемой, вы всегда будете получать файл и111Жез.ру из каталога, который находится в пути поиска раньше (левее). Как следствие, вы никогда не сможете импортировать одноименный файл из другого каталога.

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

Например, можно было бы организовать установку всего программного кода из этого примера в виде следующей иерархии: гоотгг вув1ея11 1П11 Ш1111тев ру ее!я.ру о!Пег.ру вув1ея21 530 Глава 20. Пакеты модулей Теперь достаточно просто добавить общий корневой каталог в путь поиска модулей. Если теперь выполнять импортирование относительно этого общего корня, можно будет с помощью операции импортирования пакетов импортировать любой файл из любой программы — использование имени вмещающего каталога делает путь (а значит, и ссылку на модуль) уникальным. Фактически можно даже импортировать обе утилиты сразу в одном и том же модуле, при условии, что вы будете использовать инструкцию 1арог1 и при каждом обращении к именам будете указывать полный путь к вспомогательным модулям: 1арог1 зувгеаь о111111ез тарог1 яув1еа2.

о111111ез яув1еа1. огь1111ея. Гопсг~оп1'яраа' ) зузгеа2. огз1!11ез. гопсгзоп('еров') В данном случае имя вмещающего каталога обеспечивает уникаль- ность ссылок на модули. Обратите внимание, что вместо инструкции г гоа необходимо использовать инструкцию 1арог1, только если вам необходимо получить доступ к двум или более одноименным атрибутам.

Если бы имена вызываемых здесь функций различались, можно было бы испольэовать инструкцию 1гоа, чтобы избежать необходимости всякий раз вводить полные пути к пакетам, как уже описывалось выше. Кроме того, следует заметить, что в приведенной выше иерархии установки файлы 1н11 .ру были добавлены в каталоги установки программ яуя1ет1 и яув1ет2, но не в корневой каталог гоог.

Этот файл требуется помещать только в каталоги, перечисленные в инструкциях 1арог1, — как вы наверняка помните, они автоматически выполняются интерпретатором при первой попытке программы импортировать каталог пакета. С точки зрения реализации, каталог вувгетЗ не обязательно должен находиться в каталоге гоо1 — здесь должны находиться только каталоги, откуда производится импорт пакетов.

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

ру о111111ев,ру авш. ру озовг.ру яуя1еа31 1п11 . ру ау111е. ру й Здесь или в другои иесте й ряслолагветсл ввш повий лрогрянниий код В заключение Придется держать в уме: пакеты модулей Теперь, когда пакеты стали стандартной частью Ру$(зоп, часто можно встретить крупные расширения сторонних разработчиков, распространяемые не как плоский список модулей, а как набор каталогов с пакетами, Например, пакет расширений пг(лЗаав для Рус(зоп в операционной системе 'ИЧпс(озэв был одним из первых, кто перешел на сторону победителя.

Многие вспомогательные модули этого пакета располагаются в пакетах, импортируемых посредством указания пути. Например, чтобы загрузить набор инструментальных средств для работы с технологией СОМ на стороне клиента, можно использовать такую инструкцию: Ггоо нш32соа с1зеог гирогс сооегапге, 01ерагсс Эта инструкция извлекает имена из модуля с1зелс в пакете нзл32сов (подкаталог, куда был установлен пакет).

Импортирование пакетов повсеместно используется в программном коде, работающем под управлением дур(зоп, — реализации языка РуФ(зоп на дача, потому что библиотеки самого языка дача тоже организованы в виде иерархии каталогов. В последних версиях Рус(зоп инструменты для работы с электронной почтой н ХМЬ в стандартной библиотеке также были организованы в подкаталоги пакетов.

Если вы создаете каталоги пакетов, в конечном итоге у вас будет возможность импортировать их. иска модулей никак не отражается на программном коде в зузгевзз и зуз1елзх — они по-прежнему могут использовать инструкции зарогг осз1зсзез и ожидать получить в ответ свои собственные файлы.

Кроме того, если вы предусмотрительно будете устанавливать все программы на языке РуФ(зоп в общий корневой каталог, как в данном примере, настройка пути поиска станет элементарной: вам достаточно будет один раз добавить в него общий корневой каталог. В заключение В этой главе была представлена модель импортирования пакетов — необязательный, но удобный способ явно указать путь к каталогам с модулями. В инструкциях импорта указывается путь относительно каталога, находящегося в пути поиска модулей, но вместо того, чтобы полагаться на результаты поиска, выполняемого интерпретатором, ваши сценарии могут явно указывать остаток пути к модулю. Как мы видели, пакеты не только делают операцию импортирования более осмысленной в крупных программах, но еще и упрощают настройку пути поиска (если все каталоги, откуда производится импорт, вложены Глава 20.

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

Закрепление пройденного Контрольные вопросы 1. Для чего служит файл !л!г,ру в каталогах пакетов модулей? 2. Как избежать необходимости снова и снова вводить полное имя пакета при каждом обращении к содержимому пакетов? 3. В каких каталогах необходимо создавать файл !л!г .ру? 4. В каких случаях вместо инструкции !гоа приходится использовать инструкцию тзрогт? Ответы 1. Файлы гв)г .ру служат для объявления и инициализации пакета, — интерпретатор автоматически запускает программный код в этих файлах, когда каталог импортируется программой впервые.

Переменные, которым выполняется присваивание в этих файлах, становятся атрибутами объекта модуля для соответствующего каталога. Присутствие этих файлов в каталогах пакетов обязательно— вы не сможете импортировать пакеты при отсутствии этих файлов вкаталогах. 2. Используйте инструкцию Ггоа, чтобы скопировать имена из пакета или воспользуйтесь расширением ав инструкции !арогт, чтобы переименовать полный путь в короткий синоним. В обоих случаях полный путь будет присутствовать только в одном месте — в инструкции Г гоп или!арог!.

Характеристики

Тип файла
DJVU-файл
Размер
11,21 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6358
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее