На этом шаге мы рассмотрим особенности повторной загрузки модулей.
Как вы уже знаете, модуль загружается только один раз при первой операции импорта. Все последующие операции импортирования этого модуля будут возвращать уже загруженный объект модуля, даже если сам модуль был изменен. Чтобы повторно загрузить модуль, следует воспользоваться функцией 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, перезагружены не будут. Кроме того, повторно не загружаются скомпилированные модули, написанные на других языках программирования, — например, на языке С.
Со следующего шага мы начнем рассматривать пакеты.