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

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

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

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

2. Настройка переменной РУТНОИ РАТН может потребоваться только в случае необходимости импортировать модули, размещенные в каталогах, отличных от того, в котором вы работаете (то есть отличных от текущего каталога при работе в интерактивной оболочке или от каталога, где находится главный файл программы). 3. Четырьмя основными компонентами, составляющими путь поиска модулей, являются: домашний каталог главного файла программы (каталог, в котором он находится), все каталоги, перечисленные Глава 18.

Модули: общая картина в переменной окружения РУТНОНРАТН, каталоги стандартной библиотеки и все каталоги в файлах с расширением .ртЬ, размещенных в стандартных местах. Из них доступны для настройки переменная окружения РУТНОНРАТН и файлы с расширением.рФЬ. 4. Интерпретатор Ру()топ может загружать файлы с исходными текстами (.ру), файлы с байт-кодом (.рус), файлы расширений, написанных на языке С (например, файлы с расширением .зо в 1(ппх или с расширением .т(И в ТАГ1пт(ов'з), или каталог с указанным именем, в случае импортирования пакета. Операция импортирования может также загружать менее обычные файлы, такие как компоненты из архивов в формате 21Р, классы дача в дуФ)топ — версии Ру$)топ, компоненты .г(ЕТ в 1гопРу$)топ и статически скомпонованные расширения, написанные на языке С, которые вообще не представлены в виде файлов.

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

Модули в языке РуФЬоп создаются очень просто — это всего лишь файлы с программным кодом на языке Ру1Ьоп, которые создаются с помощью текстового редактора. Вам не требуется употреблять специальные инструкции, чтобы сообщить интерпретатору РуФЬоп, что вы создаете модуль,— практически любой текстовый файл может играть зту роль. Интерпретатор сам заботится о поиске и загрузке модулей, поэтому их очень просто использовать — клиент просто импортирует модуль или определенные имена из модуля и использует объекты, на которые эти имена ссылаются. Создание модуля Чтобы определить модуль, достаточно воспользоваться текстовым редактором, с его помощью ввести некоторый программный код на языке РуФЬоп в текстовый файл и сохранить его с расширением «.ру»вЂ” любой такой файл автоматически будет считаться модулем РуФЬоп.

Все имена, которым будет выполнено присваивание на верхнем уровне модуля, станут его атрибутами (именами, ассоциированными с объектом модуля) и будут доступны для использования клиентами. Например, если ввести следующую инструкцию бе1 в файл с именем тот«и!е1.ру и импортировать его, тем самым будет создан объект модуля с единственным атрибутом — именем ргтп1ег, которое ссылается на объект функции: Ф Атрибут модуля Оет рг1п1ег(х) ртп1 х Прежде чем мы двинемся дальше, следует сказать несколько слов об именах файлов модулей.

Вы можете называть ваши модули, как вам 502 Глава )9. Основы программирования модулей будет угодно, при условии, что эти имена будут оканчиваться расширением .ру, если вы собираетесь импортировать их. Для главных файлов программ, которые будут запускаться, но не будут импортироваться, имена не обязательно должны иметь расширение .ру, однако было бы желательно использовать это расширение в любом случае, потому что оно делает назначение файлов более очевидным и позволит в будущем импортировать любой из ваших файлов. Поскольку имена модулей внутри программы превращаются в имена переменных (без расширения .ру), они также должны следовать правилам именования обычных переменных, которые приводились в главе 11. Например, можно создать файл модуля с именем (Гру, но его невозможно будет импортировать, потому что 1( — это зарезервированное слово, и когда вы попытаетесь выполнить инструкцию 1зрогт 1(, интерпретатор выдаст сообщение о синтаксической ошибке.

Фактически и имена модулей, и имена каталогов, используемых при импортировании пакетов (рассматривается в следующей главе), должны соответствовать требованиям, предъявляемым к именам переменных и представленным в главе 11, — они могут, например, содержать только алфавитные символы, цифры и символы подчеркивания. Имена каталогов с пакетами также не могут содержать посторонних символов, таких как пробелы, даже если они являются допустимыми для используемой платформы. Когда производится импорт модуля, интерпретатор Ру(Ьоп преобразует имя модуля в имя внешнего файла, добавляя в начало путь к каталогу из пути поиска модулей и добавляя .ру или другое расширение в конец.

Например, в конечном итоге имя модуля М преобразуется в имя некоторого внешнего файла <каталог>~М.<расширение>, который содержит программный код модуля. Как упоминалось в предыдущей главе, существует возможность создать модуль для Ру(Ьоп на другом языке программирования, таком как С или С++ (или )ача в реализации ду(Ьоп). Такие модули называются модулями расширений и обычно используются для создания библиотек, используемых сценариями на языке Ру(Ьоп. Когда модули расширений импортируются программным кодом на языке Ру(Ьоп, они выглядят и ведут себя точно так же, как обычные модули, написанные на языке Ру(Ьоп, — они импортируются инструкцией (зрогс и предоставляют функции и объекты в виде атрибутов объекта модуля.

Обсуждение модулей расширений выходит далеко за рамки этой книги, поэтому за дополнительной информацией обращайтесь к стандартным руководствам по языку Ру1Ьоп или к специализированным книгам, таким как яРгоягашпйпя Ру(Ьопэ. Использование модулей Клиенты могут использовать простой файл модуля, только что написанный нами, выполнив инструкцию 1зрогс или Ггоэ. Обе инструкции отыскивают, компилируют и запускают программный код модуля, ес- Использование модулей Инструкция (пт) рог1 В первом примере имя асбо1е1 служит двум различным целям — оно идентифицирует внешний файл, который должен быть загружен, и пре- вращается в имя переменной, которая ссылается на объект модуля по- сле загрузки файла: »> 1арог1 воео1е1 № Загрузить модуль целикои »> аобо1е1.рмп1ег('непо мог)о1 ') № иия дополняется именеи модуля НЕПО могил Так как в результате выполнения инструкции 1врог1 в сценарии появ- ляется имя, ссылающееся на полный объект модуля, нам необходимо использовать имя модуля при обращении к его атрибутам (напрнмер, всбо1е).

ргзп1ег). Инструкция 1гот Напротив, инструкция (гса копирует имена из области видимости од- ного файла в область видимости другого, что позволяет непосредствен- но использовать скопированные имена, не предваряя их именем моду- ля(например, рг(п(ег): »> Ггоа вобо1е1 1арог1 рг1пгег »> рг1п1ег('НеПо иог1О! ') Не П о мо г1б! № Копироееть одну переменную № Имя не требует дополнения Этот пример дает тот же результат, что и предыдущий, но так как импортируемое имя копируется в область видимости, в которой находится сама инструкция (гоа, можно напрямую обращаться к переменной в сценарии, не предваряя его именем вмещающего модуля. Как будет показано далее, инструкция (гоа является всего лишь небольшим расширением инструкции тврог1 — она импортирует файл модуля как обычно, но выполняет дополнительный шаг, на котором копирует одно или более имен из импортируемого файла.

Инструкция 1гот * Наконец, в следующем примере используется специальная форма инструкции (гса: когда используется символ *, копируются есе имена, которым присваиваются значения на верхнем уровне указанного модуля. ли он еще не был загружен. Главное различие этих инструкций заключается в том, что инструкция гаро г1 загружает модуль целиком, поэтому при обращении к именам в модуле их необходимо дополнять именем модуля. Инструкция (гоа, напротив, загружает (или копирует) из модуля отдельные имена. Посмотрим, что это означает на примере программного кода.

Все следующие примеры вызывают функцию рг1п1ег, определенную во внешнем модуле пгог(и1ез.ру, но делают это различными способами. Глава 19, Основы программирования модулей В этом случае точно так же можно использовать скопированное имя р г1п1е г, не предваряя его именем модуля: »> Ггоа вобц1е1 1арогг * Ф Скопировать все переменнме »> рг1пгегСНепо аог1б1') не11о мог1б' С технической точки зрения обе инструкции, 1 гоп и зврогс, вызывают одну и ту же операцию импорта, просто форма Гсов * дополнительно выполняет копирование всех имен в импортируемом модуле в область видимости, откуда производится импорт.

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

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

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

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

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

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