Как работает функция 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
#RepubblicaCeca#Presidenziali
La terza classificata al primo turno delle presidenziali ceche, Danuše #Nerudová, ha annunciato il suo supporto al candidato Petr #Pavel per il ballottaggio che si svolgerà il 26 e 27 Gennaio: “Abbiamo bisogno di un presidente che sostenga lo sviluppo della cultura politica. È importante che i temi rilevanti per i giovani, come l’inaccessibilità economica degli alloggi, il matrimonio per tutti, l’apertura delle forbici tra religioni, rimangano nello spazio pubblico.”
@OsservatorioEsteri
#RepubblicaCeca
Premier Petr #Fiala (#SPOLU/#ODS|ECR): "La Repubblica Ceca ha riserve di petrolio per tre mesi, di gas per due mesi estivi e riserve nucleari per un periodo fino a tre anni. Per l’esattezza, le riserve di petrolio ceche sono pari a 94 giorni. Per quanto riguarda le riserve di gas, faremo quanto necessario per riempirle prima del prossimo inverno."
@UltimoraPolitics
#RepubblicaCeca#Polonia
Il Primo Ministro ceco Petr #Fiala (#SPOLU/#ODS|ECR) ha incontrato il Presidente polacco Andrzej #Duda. Focus dell'incontro la sicurezza energetica dei due paesi. I due hanno riaffermato la loro determinazione a continuare a sostenere l'Ucraina.
@UltimoraPolitics
#RepubblicaCeca#Taiwan
Per la prima volta dopo il de-riconoscimento di Taiwan da parte della maggioranza degli Stati della comunità internazionale, un Capo di Stato di un Paese #NATO partecipa ad un evento pubblico con un Ministro degli Esteri taiwanese.
Si tratta del Presidente ceco Petr #Pavel e del Ministro taiwanese Joseph #Wu (#DPP|Centro-sinistra): Reuters la definisce una “svolta diplomatica”.
@OsservatorioEsteri
#Germania#RepubblicaCeca#Russia
Come rivelato dal portale ceco “Denikn”, cinque fonti del gabinetto ceco hanno informato di una registrazione audio resa nota dal generale di controspionaggio ceco Michal #Koudelka la scorsa settimana alla riunione classificata del governo ceco.
Tale registrazione riproduce un audio del membro tedesco del Bundestag Petr #Bystroň (#AfD|ID) che riceve denaro dalle spie russe. Bystroň è il portavoce della politica estera di AfD al #Bundestag.
@OsservatorioEsteri