Шаг 130.
Основы языка Python.
Модули и пакеты. Повторная загрузка модулей

    На этом шаге мы рассмотрим особенности повторной загрузки модулей.

    Как вы уже знаете, модуль загружается только один раз при первой операции импорта. Все последующие операции импортирования этого модуля будут возвращать уже загруженный объект модуля, даже если сам модуль был изменен. Чтобы повторно загрузить модуль, следует воспользоваться функцией reload() из модуля imp. Формат функции:

from imp import reload 
reload(<Объект модуля>)

    В качестве примера создадим модуль tests2.py со следующим содержимым:

# -*-  coding: utf-8 -*-
x = 150

    Подключим этот модуль в окне Python Shell редактора IDLE и выведем текущее значение переменной х:

>>> import tests2 # Подключаем модуль tests2.py
>>> print(tests2.x) # Выводим текущее значение
150

    Не закрывая окно Python Shell, изменим в модуле значение переменной x на 800, а затем попробуем заново импортировать модуль и вывести текущее значение переменной:

>>> # Изменяем значение в модуле на  800
>>> import tests2
>>> print (tests2.x) # Значение  не изменилось
150

    Как видно из примера, значение переменной x не изменилось. Теперь перезагрузим модуль с помощью функции reload():

>>> from imp import reload
>>> reload (tests2) #  Перезагружаем модуль
<module 'tests2' from 'C:/Python34/files\\tests2.py'>
>>> print(tests2.x) # Значение изменилось
800

    При использовании функции reload() следует учитывать, что идентификаторы, импортированные с помощью инструкции from, перезагружены не будут. Кроме того, повторно не загружаются скомпилированные модули, написанные на других языках программирования, — например, на языке С.

    Со следующего шага мы начнем рассматривать пакеты.




Предыдущий шаг Содержание Следующий шаг