Как работает функция 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
🟢¡INSANIA SE RETIRA DEL COMPETITIVO DE DOTA 2! 😢🔥
A través de un anuncio oficial en sus redes sociales, la organización de 🇸🇪Team Liquid confirma el rumor de estas semanas y comunica el retiro oficial de 🇸🇪Insania en el competitivo de dota 2 🙁
🔹Insania se retira a los 31 años de este hermoso deporte electrónico. 🥹
¿Quién no recuerda el famoso pick accidental de Gyro en el TI? Ese mismo muchacho que cometió ese error de principiante, años después, logró levantar el Aegis de los campeones. A diferencia de algunas leyendas, 🇸🇪Insania se retira como el reflejo de esfuerzo, dedicación, perseverancia y resiliencia. El ejemplo perfecto de que no todo en esta vida llega rápido, a veces las glorias requieren de mucha paciencia, esfuerzo y sacrificio.
GRACIAS POR TODO CAMPEÓN 👏👏👏
#Tinbet#esports#dota2#insania#teamliquid
@Info_Dota2
𝐍𝐎 𝐘𝐀𝐓𝐎𝐑𝐎, 𝐍𝐎 𝐏𝐀𝐑𝐓𝐘 ❌
El support de Team Liquid, Aydin "iNSaNiA" Sarkohi, habló sobre los cambios en el roster de Team Spirit. 👀
"Es triste. Team Spirit jugó de una manera única, quizás solo comparable a Xtreme Gaming. Eran un equipo que aplicaba un estilo de juego de la vieja escuela, pero con un estilo moderno del esquema 4+1. Es una pena perder a uno de los equipos de primer nivel que trabajaban con este estilo.
Había mucha gente que admiraba a Yatoro y quería imitar su juego. Ahora, sin ofender, solo quedan Skiter, Dyrachyo y Micke, quienes son los carry más activos. La salida de Yatoro hará que el Dota se vuelva más aburrido. Este tipo de meta podría desaparecer, lo que es un poco triste." 😔
#valve#theinternational#esb#Dota2#esports
#yatoro#insania
@Info_Dota2