Как работает функция 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
🏞Lake Bled and Bled Castle — top Slovenian gems!
Crystal-clear waters and stunning mountain views 🌲
A small island with a church in the center, accessible by a traditional pletna boat 🚤
📏
📏
📏
📏
📏
📏
📏
📏
#Slovenia | @voyage
#Italia#Slovenia
⚛ Energia Nucleare: Il governo italiano ha dato un parere negativo al prolungamento dell’attività della centrale nucleare di Krško, in Slovenia, che si trova a poco più di 100km dal confine, nonostante le rassicurazioni tecniche del governo sloveno. Il Ministero della Transizione Energetica ha chiesto alla Slovenia di chiudere la centrale nucleare.
@UltimoraPolitics
#Slovenia🇸🇮
#Parlamentari
❓Come si vota in Slovenia?
L'Assemblea Nazionale (Državni zbor) si compone di 90 membri, eletti ogni 4 anni. 88 deputati sono eletti con sistema proporzionale a liste aperte in 8 circoscrizioni, ognuna delle quali elegge 11 membri:
1. Kranj;
2. Postumia (Postojna);
3. Lubiana Centro (Ljubljana Center);
4. Lubiana-Bežigrad (LjubljanaBežigrad)
5. Celje;
6. Novo Mesto;
7. Marburgo (Maribor);
8. Ptuj.
I seggi sono assegnati primariamente, su base circoscrizionale, con il quoziente di Droop; quelli non allocati sono riassegnati a livello nazionale con il metodo D'Hondt; è prevista una soglia di sbarramento del 4%. I restanti 2 seggi sono assegnati alle minoranze ungherese e italiana, con il metodo Borda.
In foto: il palazzo della Državni zbor (Lubiana).
@TuttoElezioni
#Elezioni#Slovenia
N1: A Lubiana l'affluenza record, non prevista alla vigilia, ha causato forti problemi nei seggi. In alcuni seggi gli elettori non hanno potuto votare, poiché erano finite le schede elettorali.
@UltimoraPolitics