Как работает функция 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
I quit my job to build a zombie extraction shooter with destructible environments and AI that react dynamically. We've made solid progress. Should I continue on this idea #PVE.
https://redd.it/1lvftfk
by @r_gifs
⚡️Gatto Official Channel: PvE Mode Prologue Released
#Gatto#PvE
The Gatto Official Channel announces the release of the PvE Prologue mode, featuring story-driven gameplay and new mechanics. This marks a significant development step, inviting players to engage deeply with the world and its untold stories. To start, head to "Battle Mode" and choose PvE.
Source: link
@tonlines
⚔️AMAZING PVE GAMEPLAY IN ORBITAU ⚔️
💠 Testnet for Orbitau will be available shortly. In order to help you prepare, here is a very attractive gameplay clip from Chapter 1 of Map Foras.
🚦 Reveal more about Orbitau's gameplay: https://blog.orbitau.io/post/amazing-pve-gameplay
💡 Be sure to stay tuned for updated information about the upcoming testnet.
⚡️ BUT FIRST, FILL YOUR WALLET WITH SUFFICIENT $TAUM TO BUY IMMORTAL EGGS THAT WILL BE ON SALE THIS MARCH 14!
#Orbitau#PvE#gameplay#ORI#TAUM
➖➖➖➖➖➖➖➖➖➖
📌📌Our channels:
🌐Orbitau Website | 🐦Twitter|
🌎Orbitau Announcements | 🌎Orbitau Global |
👉Facebook |👉Discord | 👉Reddit | 👉Medium
➖➖➖➖➖➖➖➖➖➖
📌Orbitau local communities:
Vietnam🇻🇳 | Brazil🇧🇷 |
Bangladesh🇧🇩 | Thailand🇹🇭 |
Indonesia🇮🇩 | Philippines🇵🇭 |
Arab🇸🇦 | Korea🇰🇷 | Japan🇯🇵 |
India🇮🇳 | Turkey🇹🇷 | China🇨🇳