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

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

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

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

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

При этом в более широком понимании модули играют роль библиотек инструментов, как вы узнаете в пятой части книги. Модуль — это, главным образом, всего лишь пакет имен переменных, известный как пространство имен. Имена внутри этого пакета называются атрибутами, то есть атрибут— это имя переменной, которая связана с определенным объектом.

В самом типичном случае импортирующий программный код получает доступ ко всем именам верхнего уровня, определяемым в файле модуля. Эти имена обычно связаны с функциональными возможностями, экспортируемыми модулем, — функциями, классами, переменными и т. д., которые предназначены для использования в других файлах и программах. Снаружи доступ к именам в файле модуля можно получить с помощью двух инструкций языка РуСЬоп, !прог! и !гол, а также с помощью вызова функции ге1оав. 89 Импортирование и перезагрузка модулей Для иллюстрации вышесказанного с помощью текстового редактора создайте однострочный файл модуля Ру()зоп с именем туг((е.ру со следующим содержимым: ТЫ1в = 'Тзе Ваапапз оГ Ытз" Это, пожалуй, один из самых простых модулей Ру()зоп (он содержит единственную операцию присваивания), но его вполне достаточно для иллюстрации основных положений.

При импортировании этого модуля выполняется его программный код, который создает атрибут модуля. Инструкция присваивания создает атрибут с именем 1.11е. Доступ к атрибуту 1111е можно получить из других программных компонентов двумя разными способами. Первый заключается в том, чтобы загрузить модуль целиком с помощью инструкции 1врогС, а затем обратиться к атрибуту по его имени, уточнив его именем модуля: % рутооп № Запуск интерпретатора Рутлоп »> 1врог1 ву№11з № запуск файла; модуль загружается целиком »> рг1п1 вут11в.1111з № иия атрибута, уточнвннов именем модуля через Тзе Ввапшр от 111з Вообще синтаксис точечной нотации, в виде оЬ) есг. а11гзЬц1е, позволяет получить доступ к любому атрибуту в любом объекте, и этот прием широко используется в программном коде на языке Ру1йоп.

Здесь мы использовали его для обращения к строковой переменной 1111е, определенной внутри модуля туг((е, — то есть ву(11е. 1111е. Кроме того, доступ к именам внутри модулей (фактически, копию имен) можно получать с помощью инструкции Т гав: % ру1поп № Запуск интерпретатора Рутлоп »> ггов вугт1з тврогт 1111е № запуск файла; вцлолнявтся копирование имен »> ргапт 1111а № имя атрибута использувтся напряиую, уточнвнив нв требуется Тзе Меапшр от 11те Как будет говориться позднее, инструкция 1гов во многом подобна инструкции 1врог1, которая выполняет присваивание имен в импортируемом компоненте. С технической точки зрения, инструкция Т гов копирует атрибуты модуля так, что они становятся простыми переменными в программном коде, выполняющем импорт, благодаря чему на этот раз он может обратиться к импортированной строке уже не по имени ву(11е.

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

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

Такие объекты становятся программными компонентами многократного использования, доступ к которым можно получить из одного или более клиентских модулей. д Определяются три атрибута, а Зкспортируеиие другии иодуляи а = 'баас' Ь = 'раггот' С = 'Вкессп' рг1пг а, Ь, с з Крома того, оии используются и самим зтии модулем В файле Игеелатевру создаются три переменные, которые становятся тремя атрибутами, доступными внешнему миру.

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

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

' 11!е ', ' папе ', 'а', 'ь', 'с) При вызове функции с1г передается имя импортированного модуля в круглых скобках, как показано выше, а возвращает она список всех атрибутов, определенных внутри модуля. Некоторые возвращаемые имена, которые начинаются и завершаются двумя символами подчеркивания, присутствуют всегда; эти встроенные имена определяются самим интерпретатором Ру(Ьоп и имеют для него особый смысл. Имена переменных, которые определяются нашими инструкциями присваивания, — а, Ь и с — выводятся в конце списка, получаемого от функции От г.

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

Модули позволяют уменьшить вероятность конфликтов имен в программном коде — т. к. каждый файл является самостоятельным пространством имен, имена в одном файле не вступают в конфликт с именами в другом файле, даже если они одинаковые.

Как можно понять, модули — одно из ухищрений, которые используются в языке Ру(Ьоп для упаковки переменных в категории, чтобы избежать конфликтов имен. Далее мы еще будем обсуждать модули и другие конструкции образования пространств имен (включая классы и функции). А пока будем использовать модули в качестве средства многократного использования программного кода, позволяющего не вводить его повторно с клавиатуры. (п) рог~ и ге!оаэи, примечания к использованию Зачастую, узнав о возможности запуска файлов с помощью таро гт и ге1оао, начинающие разработчики концентрируют все свое внимание на этом способе и забывают о других возможностях запуска, позволяющих всегда запускать самую свежую версию программного кода (например, щелчок мышью на ярлыке, пункты меню интегрированной среды разработки ПН,Е и системная командная строка).

Такой подход может быстро привести к появлению ошибок — вам придется запоминать, импортировали ли вы тот или иной модуль, чтобы иметь возможность перезагрузить его; вам нужно будет помнить о необходимости использовать круглые скобки при вызове функции ге1оае (только для нее) и не забывать использовать ее, чтобы запустить самую последнюю версию модуля. 92 Глава 3. Как пользователь запускает программы Из-за этих сложностей (и некоторых других, с которыми мы еще столкнемся позднее) пока лучше избегать пользоваться операциями импорта и перезагрузки.

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

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

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

Например, если вам необходимо импортировать файл модуля, который хранится в каталоге, отличном от того, в котором вы работаете, дождитесь, пока мы не подойдем к главе 18, где вы узнаете о пути поиска модулей. А пока, чтобы избежать осложнений, храните все импортируемые файлы модулей в рабочем каталоге. о ",8 Для тех, кто не хочет ждать, пока повествование дойдет до главы 18, скажу, что интерпретатор Русйол выполняет поиск импортируемых модулей во всех каталогах, перечисленных в переменной вув рата, — в списке имен каталогов, определенной в модуле ауа, которая инициализируется значением переменной окружения РТТНОНРЯТН, и в наборе стандартных имен каталогов.

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

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

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

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