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

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

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

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

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

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

ратл, преднамеренно или нет. На практике пользователи Ру11топ могут избегать использовать имена модулей стандартной библиотеки для своих модулей (если вам требует- 542 Глаза 21. Дополнительные возможности модулей ся стандартный модуль в1г1пд, не называйте свой модуль этим именем).

Но это не поможет, если пакет делает недоступным стандартный модуль случайно. Кроме того, с течением времени в стандартную библиотеку Ру(Ьоп могут добавляться новые модули — с теми же именами, которые присвоены вашим уже существующим модулям. Программный код, использующий особенности относительного импорта, сложнее понять, потому что бывает трудно выяснить, какой модуль импортируется. Гораздо лучше, если решение явно описывается в программном коде.

В Ру1Ьоп 2.5 мы можем управлять поведением операций импорта, вынуждая их использовать абсолютный режим импортирования инструкцией угов Га1оге, которая была описана ранее. Учтите, что режим абсолютного импортирования будет использоваться по умолчанию в будущих версиях (планируется ввести его в Ру(Ьоп 2.7). Когда режим абсолютного импортирования будет включен, следующая инструкция в нашем примере файла тургУд1та(и.ру всегда будет находить версию модуля в1гтпд из стандартной библиотеки благодаря абсолютному поиску: 1арог1 втгюд я импорт модуля вггапд иэ стандартной библиотеки Вы должны уже сейчас привыкать к использованию абсолютного режима импорта, чтобы быть готовыми, когда изменения вступят в силу.

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

С помощью относительного синтаксиса можно также копировать заданные имена из модуля: Ггоа .в1ыпд 1арог1 пааа1, паае2 д Импортирует имена иэ аурнд.втгэпд Эта инструкция также ссылается на модуль вгг!пд относительно текущего пакета. Если поместить эту инструкцию в модуль ауркд пати, например, она будет импортировать имена паве! и паае2 из модуля вурПд, втг1пд. Дополнительная начальная точка предписывает выполнить относительный импорт, начиная с родительского каталога текущего пакета.

Например, инструкция: ггоп,, впрог1 арап р иипортирует иодуль одного уровня с лакетои ауркд Концепции проектирования модулей загрузит модуль, находящийся на том же уровне в иерархии каталогов, что и пакет ауряо, — то есть модуль враз, находящийся в каталоге, родительском по отношению к пакету ауряр. В общем случае действия программного кода в модуле А.

В. С будут следующими: тгоа . тарогт 0 Е Иипортирует А. Р Р ггоа тарогт е е ииоортирует А. е Ггоа ..Е тарогт З Е Ииоортирует А. д Р Синтаксис относительного импорта и предложенные изменения по использованию «абсолютного импорта по умолчанию» — это достаточно сложные концепции, которые лишь частично реализованы в Руопоп 2.4. Поэтому мы больше не будем углубляться в эту тему, и за более подробной информацией обращайтесь к набору стандартных руководств по языку РуФЬоп. Концепции проектирования модулей Как и в случае с функциями, при проектировании модулей используются свои правила: вам необходимо подумать о том, какие функции и в какие модули будут входить, предусмотреть механизмы взаимодействия между модулями и т.

д. Все это станет более понятным, когда вы начнете создавать крупные программы на языке Руопоп, а пока ознакомьтесь с несколькими основными положениями: ° В языке Руапоп вы всегда находитесь в модуле. Нет никакого способа написать программный код, который не находился бы в каком- нибудь модуле. Фактически даже программный код, который вводится в интерактивной оболочке, на самом деле относится к встроенному модулю с именем аа1л — единственная уникальная особенность интерактивной оболочки состоит в том, что программный код после выполнения сразу же удаляется, а результаты выражений выводятся автоматически. ° Минимизируйте взаимозависимость модулей: глобальные переменные.

Как и функции, модули работают лучше, когда они написаны как самостоятельные закрытые компоненты. Следуйте правилу: модули должны быть максимально независимы от глобальных имен в других модулях. ° Максимизируйте согласованность внутри модуля: общая цель. Уменьшить взаимозависимость модулей можно за счет увеличения согласованности отдельного модуля — если все компоненты модуля используются для достижения общей цели, маловероятно, что такой модуль будет зависеть от внешних имен.

° Модули должны редко изменять переменные в других модулях. Мы демонстрировали справедливость этого правила на примере программного кода в главе 16. Но будет совсем нелишним повторить его: использование глобальных переменных из других модулей (в конце концов, это один из способов, каким клиенты импортируют 545 Концепции проектирования модулей мы обычно называем металрограммами, потому что они работают поверх других программ. Этот прием также называется интроспекцией, потому что программы могут просматривать внутреннее устройство объектов и действовать, исходя из этого. Интроспекция — это дополнительная особенность, которая может быть полезна при создании инструментальных средств программирования.

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

бтст ['паве'] я Доступ с использованием словаря пространства ииен вув.аоео1ев('и'].паве л доступ нерее таблицу звгружвннык иодулвй цетаттг(И, 'папе') Ф доступ с поиомьа встроенной функиии Обеспечивая доступ к внутреннему устройству модулей, интерпретатор помогает создавать программы, управляющие другими программамид Например, ниже приводится модуль с именем лтусг(гру, в котором использованы эти идеи для реализации измененной версии встроенной функции с1г. Этот модуль определяет и экспортирует функцию с именем 1)вт)пц, которая принимает объект модуля в качестве аргумента и выводит отформатированный листинг пространства имен модуля: и модуль, которыя выводит содержимое пространства имен других иодупей оегоове = 1 Се! 11вт1пц(аоео1е) тт оегоове: рыпт "-" 30 ршпт "паве;", аоео1е.

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

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

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

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