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

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

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

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

Обратите внимание: в следующем листинге видно, что операция импортирования модуля не дает желаемого результата — на экран выводится первоначальный текст сообщения, несмотря на то что файл был изменен. Чтобы задействовать новую версию, необходимо вызвать функцию ге1сабк ...вернитесь обратно в интерактивную оболочку... »> 1юрог! слапрег »> спапрег.рг1п1ег() в никакого эфректа: используется преиняя версия модуля Г!гвт чвгв(оп »> ге1оаб(спапдег) в принудительная загрузка/вилолнение ~оного кода <аобо1е 'сяапдег'> »> спапрег.рг1псег() в теперь будет запущена новая версия ге1оабеб: Аттег ест!!пд Обратите внимание, что функция ге1саб в действительности возвращает объект — обычно ее результат игнорируется, но поскольку интерактивная оболочка автоматически выводит результат выражения, интерпретатор вывел результат в виде строки <юоб п1е ' папе ' >.

В заключение В этой главе были рассмотрены основные инструменты, используемые при программировании модулей, — инструкции !прог! и Ггов, и функция ге1оаб. Мы узнали, что инструкция Ггсв просто выполняет один дополнительный шаг, на котором она копирует имена из файла после того, как он будет импортирован, и что функция ге1оаб принудительно выполняет операцию импортирования файла без остановки и перезапуска интерпретатора Ру1Ьоп. Мы также рассмотрели понятия пространства имен, увидели, что происходит при вложенных операциях импортирования, узнали, как файлы становятся пространствами имен модулей, и познакомились с некоторыми потенциальными ловушками инструкции Г гоп. Мы уже достаточно знаем, чтобы начать работать с файлами модулей в наших программах, и тем не менее в следующей главе приводятся расширенные сведения о модели импортирования — об импортирова- 519 Закрепление пройденного нии пакетов — о способе, с помощью которого инструкции (врогг можно указать относительный путь к каталогу, где находится требуемый модуль.

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

Как взаимосвязаны инструкции ггоз и шрог1? 3. Какое отношение к операции импортирования имеет функция ге1оас? 4. Когда вместо инструкции ггоэ следует использовать инструкцию 1врогг? 5. Назовите три потенциальных ловушки инструкции г гов. б. Какова скорость полета ласточки без груза? Ответы 1. Чтобы создать модуль, достаточно просто создать текстовый файл с инструкциями на языке Ру(поп; любой файл с исходным программным кодом автоматически становится модулем — нет никаких синтаксических конструкций для его объявления. Можно также создать модуль, написав программный код на другом языке программирования, таком как С или дача, но такие модули находятся вне рассмотрения этой книги.

2. Инструкция ггов импортирует модуль целиком, как и инструкция (вро г1, но кроме этого она еще копирует одно или более имен из импортируемого модуля в ту область видимости, где находится инструкция (газ. Это позволяет использовать импортированные имена напрямую (лапе), без дополнения их именем модуля (воса1е. паве). 3. По умолчанию модуль импортируется один раз за все время выполнения программы.

Функция ге1оаг) принудительно выполняет повторное импортирование. Она часто используется, чтобы загрузить новую версию исходного программного кода модуля в процессе разработки и в случаях динамической настройки. 4. Инструкция (зрогг обязательно должна использоваться вместо инструкции ггоа, только когда необходимо обеспечить доступ к одному и тому же имени в двух разных модулях — поскольку вы будете вынуждены указывать имена вмещающих модулей, эти два имени будут уникальны. Глава 19.

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

А какая ласточка имеется в виду7 Африканская или европейская? Пакеты модулей До сих пор, импортируя модули, мы загружали файлы. Это типичный способ использования модулей, и скорее всего, этот прием будет вами использоваться наиболее часто в начале вашей карьеры программиста на языке Ру1Ьоп. Однако возможности импортирования модулей немного богаче, чем я предлагал вам считать до настоящего момента.

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

Как мы увидим дальше, операция импортирования пакетов иногда оказывается просто необходимой, чтобы избежать неоднозначности при наличии нескольких файлов программ с одинаковыми именами, установленных на одном компьютере. Основы операции импортирования пакетов Так как же работает импортирование пакетов7 В инструкциях !еросц там, где вы указывали имя простого файла, можно указать список имен в пути к каталогу, разделяя их символами точки: То же самое относится и к инструкции ! сов: !гоз С!г! 01Г2 воз 1врог! х 522 Глава 20.

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

Кроме того, эти инструкции предполагают, что каталог Жг1 находится внутри некоторого контейнерного каталога «11гО, который находится в пути поиска модулей. Другими словами, обе инструкции импорта предполагают наличие структуры каталогов, которая выглядит примерно так, как показано ниже (здесь в качестве разделителей имен каталогов используется символ обратного олеша, принятый в операционной системе Т)ОБ): о1гоко1гцо1г2с«оо, ру Ф шли воо рус, воо, ео и т. д.

Контейнерный каталог ЮтО должен быть добавлен в путь поиска модулей (если это не домашний каталог главного файла программы), как если бы имя «1(г1 было именем модуля. Инструкция )вротг в вашем сценарии определяет пути, ведущие непосредственно к модулям, начиная от этого каталога.

Пакеты и настройка пути поиска Если вы используете эту возможность, имейте в виду, что пути к каталогам в инструкции твро т с могут содержать только имена переменных, разделенные точками. Здесь нельзя использовать синтаксис путей к каталогам, специфичный для текущей платформы, как, например, С.'кбт т1„Му 0осовелез.

бт г2 или .. /б1г1 — это недопустимый синтаксис. Вместо этого платформозависимый синтаксис используйте в настройках путей поиска модулей, именуя необходимые каталоги-контейнеры. Так, в предыдущем примере д(тΠ— это имя каталога, которое требуется добавить в путь поиска модулей и которое может иметь произвольную длину и путь, с учетом специфики используемой платформы, ведущий к каталогу «11т1. Вместо того чтобы использовать ошибочный синтаксис, как показано ниже: !врем с:'квусооекш т1кшг2'квоб Ф Ошибка: недооустииыд синтаксис добавьте путь С:~лтусос(е в переменную окружения РУТНОНРАТН или в файл .рт)«(предполагается, что это не домашний каталог программы, поскольку в этом случае этот шаг не является необходимым) и используйте такую инструкцию: 1вроы О1г1 Оы 2 вос В сущности, записи в списке путей поиска модулей содержат платформозависимые пути к каталогам, которые ведут к самым левым именам 523 Основы операции импортирования пакетов в цепочках, представленных в инструкциях 1врогт, а сами инструкции !зрсгт предоставляют окончание пути к каталогам платформонезависимым способом.' Файлы пакетов )пй .ру Если вы решили использовать импортирование пакетов, существует еще одно условие, которое необходимо будет соблюдать: каждый каталог в пути, указанном в инструкции импортирования пакета, должен содержать файл с именем шл .ру, в противном случае операция импорта пакета будет терпеть неудачу.

То есть в примере выше каталоги г1)г1 и г1!г2 должны содержать файл с именем !пйа .ру; каталог- контейнер ЖгО может не содержать такой файл, потому что сам он не указан в инструкции импортирования пакета. Точнее говоря, для такой структуры каталогов: С!го'тс1г1те!г2тзое.ру и инструкции импортирования, имеющей следующий вид: !враг! С1г1.С!г2.чсе применяются следующие правила: ° т11г1 и с!!г2 должны содержать файл 1и!1 .ру. ° г11гО, каталог-контейнер, может не содержать файл тл .ру— этот файл будет проигнорирован, если он присутствует. ° ШгО, но не Жг01Жг1, должен присутствовать в пути поиска модулей (то есть он должен быть домашним каталогом или присутствовать в переменной окружения РУТНОНРАТН и т. д.). Таким образом, структура каталогов в этом примере должна иметь следующий вид (здесь отступы указывают на вложенность каталогов): а Каталог-контейнер в пути леиека иедулей 01гс'! С1г1т, 1ят! С1г2! тп11 .ру зос.ру Символ точки как разделитель имен каталогов был выбран ие только для обеспечения независимости от используемой платформы, но и потому, что пути в инструкциях тзрсгт в действительности становятся вложенными объектами пути.

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

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

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

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

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