Как работает функция 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
💥Sombrero Quiksilver Bushmaster para Hombre
El complemento perfecto para tus aventuras navideñas
✅OFERTA: 26.1€
❌ Antes: 32.99€
💰Ahorras un 21%🔥
Protección y estilo en un solo producto
👉 Hazlo parte de tus escapadas
#quiksilver#sombrero#safari#moda#hombre#navidad#ofertas#tendencias
🛰️Oferta publicada en Moda y Belleza
TASTE OF AFRICA: 26 апреля в ресторане «Сомбреро» настоящее тектоническое воссоединение Африки и Латинской Америки!
НАПОМИНАЕМ И ПРИГЛАШАЕМ 👇
• Живое выступление группы Zava Matotra - африканские ритмы, от которых невозможно устоять на месте 🥁
• Музыкальный джем с друзьями импровизация, атмосфера единства 🎶
• Гастрономическое путешествие: приготовим особое блюдо из Западной Африки🍽️
Сделайте это воскресенье самым жарким вечером недели танцуем, пробуем, наслаждаемся! 💃
🗓Когда: 26 апреля (воскресенье), 19:00
📍Где: ресторан & бар «Сомбреро» (м. Добрынинская, Москва)
ул. Большая Полянка, 51а/9, цокольный этаж, Москва, 115054
🗺Карта:https://yandex.ru/maps/-/CPC7BOm5
До встречи на празднике музыки и вкуса! ✨
ВХОД БЕСПЛАТНЫЙ!!!!!
#TasteOfAfrica#Африка#AfricanVibes#LiveMusic#ZavaMatotra#Москва#Добрынинская#Sombrero#АфриканскаяКухня#Вечеринка#КудаПойтиМосква#SundayVibes
TASTE OF AFRICA: 26 апреля в ресторане «Сомбреро» настоящее тектоническое воссоединение Африки и Латинской Америки!
Что вас ждёт 👇
• Живое выступление группы Zava Matotra - африканские ритмы, от которых невозможно устоять на месте 🥁
• Музыкальный джем с друзьями импровизация, атмосфера единства 🎶
• Гастрономическое путешествие: приготовим особое блюдо из Западной Африки🍽️
Сделайте это воскресенье самым жарким вечером недели танцуем, пробуем, наслаждаемся! 💃
🗓Когда: 26 апреля (воскресенье), 19:00
📍Где: ресторан & бар «Сомбреро» (м. Добрынинская, Москва)
ул. Большая Полянка, 51а/9, цокольный этаж, Москва, 115054
🗺Карта:https://yandex.ru/maps/-/CPC7BOm5
До встречи на празднике музыки и вкуса! ✨
ВХОД БЕСПЛАТНЫЙ!!!!!
#TasteOfAfrica#Африка#AfricanVibes#LiveMusic#ZavaMatotra#Москва#Добрынинская#Sombrero#АфриканскаяКухня#Вечеринка#КудаПойтиМосква#SundayVibes