Программа на Python состоит из нескольких файлов, в которых содер- жится исходный код. Каждый такой файл это модуль, группирующий код и дан


Избегайте изменения связывания встроенного атрибута


Download 0.89 Mb.
Pdf ko'rish
bet14/29
Sana21.04.2023
Hajmi0.89 Mb.
#1369643
TuriПрограмма
1   ...   10   11   12   13   14   15   16   17   ...   29
Bog'liq
Модули в python

Избегайте изменения связывания встроенного атрибута 
__import__
Несмотря на то что повторное связывание атрибута __import__ по-
началу может показаться привлекательным подходом, в большинстве 
случаев, когда требуются пользовательские функции-импортеры, луч-
ше всего реализовать их посредством функций — перехватчиков опе-
рации импорта (рассмотрены ниже).
Перехватчики импорта
Python предлагает расширенную поддержку избирательного изменения деталей 
выполнения операции импорта. Пользовательские функции-импортеры относятся 
к числу более сложных и редко используемых приемов, однако некоторые приложе-
ния могут нуждаться в них для таких, например, целей, как импортирование кода 
из архивов, отличных от ZIP-файлов, а также из баз данных, сетевых серверов и т.п.
Наиболее подходящим способом удовлетворения подобных завышенных запро-
сов является запись вызываемых объектов-импортеров в качестве элементов атрибу-
тов meta_path и/или path_hooks модуля sys, о чем подробно говорится в документе 
PEP 302 (https://www.python.org/dev/peps/pep-0302/), а также, применительно 
к версии v3, в документе PEP 451 (https://www.python.org/dev/peps/pep-0451/). 
Именно так Python перехватывает обращение к модулю zipimport стандартной 
библиотеки для обеспечения беспрепятственного импорта модулей из ZIP-файлов, 
о чем упоминалось ранее. Если вы собираетесь интенсивно использовать перехват-
чики sys.path_hooks и родственные им, то без тщательного изучения документов 
PEP 302 и PEP 451 вам не обойтись. Однако, для того чтобы вы могли получить 
некоторое представление об этих возможностях, если потребность в них у вас когда-
либо возникнет, ниже приведен небольшой иллюстративный пример.
Предположим, в процессе разработки первого наброска некоторой программы 
вам было бы удобно использовать инструкции import в отношении модулей, ко-
торые еще не написаны, получая при том всего лишь сообщения (и пустые моду-
ли). Вы можете получить такую функциональность (оставляя в стороне сложности
Python in a Nutshell.indb 241
19.09.2018 19:03:28



Download 0.89 Mb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   ...   29




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling