Как работает функция reload()?
Эта функция нужна для того, чтобы перезагрузить изменившийся код из py-файла без рестарта интерпретатора.
Дело в том, что любой импортированный модуль при повторном импорте не будет перечитывать файл. Функция импорта вернёт уже загруженный в память объект модуля. Чтобы обновить код, нужно либо перезапустить всю программу, либо использовать функцию reload()
from importlib import reload
reload(my_module)
🔸 Функция reload() принимает в качестве аргумента только объект модуля или пакета. Она не может перезагрузить класс или функцию. Только весь файл целиком!
🔸 Перезагрузка пакета перезагрузит только его файл __init__.py, если он есть. Но не вложенные модули.
🔸Она не может перезагрузить ранее не импортированный модуль.
🔸При вызове функция reload() перечитывает и перекомпилирует код в файле, создавая новые объекты. После создания новых объектов перезаписывается ранее созданный неймспейс этого модуля.
Это значит, что если где-то этот модуль импортирован через import и обращение к атрибутам происходит через неймспейс (имя) модуля, то такие атрибуты обновятся.
Если какие-либо объекты из этого модуля импортированы через from то они будут ссылаться на старые объекты.
Напишем простой модуль
# mymodule.py
x = 1
Теперь импортируем модуль и отдельно переменную х из модуля
>>> import mymodule
>>> from mymodule import x
>>> print(mymodule.x)
1
>>> print(x)
1
Не перезапуская интерпретатор вносим изменения в модуль
# mymodule.py
x = 2
Делаем перезагрузку модуля и проверяем х ещё раз
>>> reload(mymodule)
>>> print(mymodule.x)
2
>>> print(x)
1
То же самое будет если присвоить любой объект переменной (даже словарь или список)
Повторный импорт обновляет значение
>>> from mymodule import x
>>> print(x)
2
🔸Созданные инстансы классов не обновятся после перезагрузки модуля. Их придётся пересоздать.
#tricks#basic
🍂 Август — месяц, когда солнце особенно нежно.
Ощути эту нежность в цветах Ван Гога и мечтах Сальвадора Дали.
Ждем вас на выставках #Artplay Media:
🎨 Король сюрреализма
🎨 Ван Гог. Письма к Тео
Билеты действуют 30 дней — выбирайте день вдохновения сами.
➡️ Билеты и расписание — artplaymedia.ru
☎️ +7 906 779 16 16
📍 Москва, ул. Нижняя Сыромятническая, 10, стр. 2, вход 2А
Немного про искусство
…
В Центре цифрового искусства открылась новая мультимедиа выставка «Искусство Японии: от Хокусая до современности». Немного фотографий с выставки картин и скульптур. Рекомендую, очень интересная выставка.
#artplay#отхокусаядосовременности
@artplaymedia
#анонс_лично
В преддверии дня всех влюбленных Московская школа современного искусства проведет лекцию «Отношения во времени»о ярких и известных парах в искусстве:
✔️ Христо и Жанна-Клод
✔️ Илья и Эмилилия Кабаковы
✔️ Абрамович и Улай
✔️ Родченко и Степанова.
Узнайте, как они вдохновляли друг друга, создавали совместные проекты и как долго длились их творческие союзы.
Вход свободный по регистрации.
Визуал: работа Варвары Степановой. Карикатура на себя и Александра Родченко. 1920 год
🗓️ 13 февраля, 19.30
⛳️ Центр дизайна Artplay,
ул. Н. Сыромятническая, 10, стр.3
#лекция#msca#artplay#отношениявовремени
Теперь по пути от Курской на наши выставки можно совершенно бесплатно посмотреть еще одну экспозицию – уличную выставку «Архитектура слова», которую открыли @artplaymoscow совместно с @winzavod и @mka_mos_ru
Работы появились прямо на стене вдоль железнодорожных путей по дороге от Курского вокзала в сторону ARTPLAY и ЦСИ Винзавод.
Художники проекта: Slak_Aesthetics @slak_aesthetics, Дима Retro @retro_oner) Кирилл Кто kirillkto1, Petro_Aesthetics @Petro_aesthetics, Иван Найнти ivn_ninety.
«Архитектура слова» — выставка о коммуникации, городе и его символах. Это метафора о построении мира, связях и взаимодействии людей со средой.
Теперь эта стена, а точнее забор, получает официальный статус — проект НЕТСТЕН (слово-палиндром, по одноименной работе художника Ивана Симонова на Стене в ЦСИ Винзавод).
НЕТСТЕН — это проект про искусство без рамок, мост между художником и городом, художником и зрителем, искусством и вандализмом.
#НЕТСТЕН#Архитектура_слова#Винзавод#ARTPLAY#ARTPLAY_media