Как работает функция 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
Куксарой қароргоҳидаги икки томонлама тадбирлар якунида Ўзбекистон Республикаси Президенти Шавкат Мирзиёев ва Россия Федерацияси Президенти Владимир Путин Фахрий меҳмонлар хиёбонида биргаликда дарахт экдилар.
—
В завершение двусторонних мероприятий в резиденции «Куксарой» Президент Республики Узбекистан Шавкат Мирзиёев и Президент Российской Федерации Владимир Путин вместе посадили дерево на Аллее почетных гостей.
#Mirziyoyev#tashrif#Rossiya#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X
Олий даражадаги Ўзбекистон-Мўғулистон музокаралари якунлангач, Кўксарой қароргоҳида дарахт экиш маросими бўлиб ўтди.
—
В завершение узбекско-монгольских переговоров на высшем уровне состоялась церемония посадки дерева в резиденции «Куксарой».
#Mirziyoyev#tashrif#Muguliston#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston bilan Paragvay oʻrtasida oliy darajadagi muzokaralar yakunlangach, Koʻksaroy qarorgohida daraxt ekish marosimi boʻlib oʻtdi.
—
В завершение узбекско-парагвайских переговоров на высшем уровне в резиденции «Куксарой» состоялась церемония посадки дерева.
#Mirziyoyev#tashrif#Paragvay#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X
Самарқанддаги олий даражадаги музокаралардан сўнг, Президентлар Шавкат Мирзиёев ва Эммануэль Макрон биргаликда дарахт экдилар.
—
После переговоров на высшем уровне в Самарканде Президенты Шавкат Мирзиёев и Эммануэль Макрон вместе посадили дерево.
#Mirziyoyev#tashrif#daraxt#marosim
Prezident.uz|Facebook|Instagram|YouTube|Twitter
Президентлар Шавкат Мирзиёев ва Александр Лукашенко “Кўксарой” қароргоҳининг Фахрий меҳмонлар хиёбонида биргаликда дарахт экдилар.
—
Президенты Шавкат Мирзиёев и Александр Лукашенко вместе посадили дерево на Аллее почетных гостей в резиденции «Куксарой».
#Mirziyoyev#tashrif#Belarus#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X
Ўзбекистон-Италия саммити дастури доирасида Президент Шавкат Мирзиёев ва Президент Сержо Маттарелла дарахт экиш маросимида иштирок этдилар.
—
В соответствии с программой узбекско-итальянского саммита Президент Шавкат Мирзиёев и Президент Серджо Маттарелла приняли участие в церемонии посадки дерева.
#Mirziyoyev#tashrif#Italiya#daraxt
Prezident.uz|Facebook|Instagram|YouTube|Twitter
Oʻzbekiston bilan Paragvay oʻrtasida oliy darajadagi muzokaralar yakunlangach, Koʻksaroy qarorgohida daraxt ekish marosimi boʻlib oʻtdi.
—
В завершение узбекско-парагвайских переговоров на высшем уровне в резиденции «Куксарой» состоялась церемония посадки дерева.
#Mirziyoyev#tashrif#Paragvay#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyev “Yashil makon” umummilliy loyihasi doirasida koʻchat ekish tadbirida ishtirok etib, Milliy dendrologiya bogʻini barpo etishga start berdi.
—
Президент Шавкат Мирзиёев принял участие в мероприятии по высадке деревьев в рамках общенационального проекта «Яшил макон» и дал старт созданию Национального дендрологического парка.
#Mirziyoyev#marosim#Yashilmakon#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyev “Yashil makon” umummilliy loyihasi doirasida koʻchat ekish tadbirida ishtirok etib, Milliy dendrologiya bogʻini barpo etishga start berdi.
—
Президент Шавкат Мирзиёев принял участие в мероприятии по высадке деревьев в рамках общенационального проекта «Яшил макон» и дал старт созданию Национального дендрологического парка.
#Mirziyoyev#marosim#Yashilmakon#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X
O‘zbekiston – Finlyandiya sammiti yakunida Prezidentlar Shavkat Mirziyoyev va Aleksandr Stubb Ko‘ksaroy qarorgohida birgalikda daraxt ekdilar.
—
По завершении узбекско-финского саммита Президенты Шавкат Мирзиёев и Александр Стубб вместе посадили дерево в резиденции «Куксарой».
#Mirziyoyev#tashrif#Finlyandiya#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyev “Yashil makon” umummilliy loyihasi doirasida koʻchat ekish tadbirida ishtirok etib, Milliy dendrologiya bogʻini barpo etishga start berdi.
—
Президент Шавкат Мирзиёев принял участие в мероприятии по высадке деревьев в рамках общенационального проекта «Яшил макон» и дал старт созданию Национального дендрологического парка.
#Mirziyoyev#marosim#Yashilmakon#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyev “Yashil makon” umummilliy loyihasi doirasida koʻchat ekish tadbirida ishtirok etib, Milliy dendrologiya bogʻini barpo etishga start berdi.
—
Президент Шавкат Мирзиёев принял участие в мероприятии по высадке деревьев в рамках общенационального проекта «Яшил макон» и дал старт созданию Национального дендрологического парка.
#Mirziyoyev#marosim#Yashilmakon#daraxt
Prezident.uz|Facebook|Instagram|YouTube|X