Как работает функция 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
🔥 Top Blacksmiths #4 is NOW LIVE! 🔥
🏆 Rewards: Top 50 Blacksmiths will share 150,000 AURA
🎖 Reward Breakdown:
🥇 Top 1: 25K AURA
🥈 Top 2: 15K AURA
🥉 Top 3: 10K AURA
🏅 Top 4-10: 5K AURA
🏅 Top 11-20: 3K AURA
🏅 Top 21-30: 2K AURA
🏅 Top 31-40: 1K AURA
🏅 Top 41-50: 500 AURA
⏰ Duration: Mar 15, 14:00 UTC - Mar 29, 14:00 UTC
📌 Note: Leaderboard rank is based on Points. If Points are tied, higher pot tier ranks higher.
🔨 Prove you're the ultimate Blacksmith! 🏅
#SingSing#TopBlacksmiths
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔥 Top Blacksmiths #3 is NOW LIVE! 🔥
🏆 Rewards: Top 50 Blacksmiths will share 150,000 AURA
🎖 Reward Breakdown:
🥇 Top 1: 25K AURA
🥈 Top 2: 15K AURA
🥉 Top 3: 10K AURA
🏅 Top 4-10: 5K AURA
🏅 Top 11-20: 3K AURA
🏅 Top 21-30: 2K AURA
🏅 Top 31-40: 1K AURA
🏅 Top 41-50: 500 AURA
⏰ Duration: Feb 15, 14:00 UTC - Mar 1, 14:00 UTC
📌 Note: Leaderboard rank is based on Points. If Points are tied, higher pot tier ranks higher.
🔨 Prove you're the ultimate Blacksmith! 🏅
#SingSing#TopBlacksmiths
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔥 Top Blacksmiths #2 is NOW LIVE! 🔥
🏆 Rewards: Top 50 Blacksmiths will share 150,000 AURA + $100 $SING!
🎖 Reward Breakdown:
🥇 Top 1: 25K AURA + $20 $SING
🥈 Top 2: 15K AURA + $15 $SING
🥉 Top 3: 10K AURA + $10 $SING
🏅 Top 4-10: 5K AURA + $5 $SING each
🏅 Top 11-20: 3K AURA + $2 $SING each
🏅 Top 21-30: 2K AURA
🏅 Top 31-40: 1K AURA
🏅 Top 41-50: 500 AURA
⏰ Duration: Jan 15, 14:00 UTC - Feb 5, 14:00 UTC
📌 Note: Leaderboard rank is based on Points. If Points are tied, higher pot tier ranks higher.
🔨 Prove you're the ultimate Blacksmith! 🏅
#SingSing#TopBlacksmiths
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔥 Top Blacksmiths #2 has ENDED! 🔥
Huge respect to all the Blacksmiths who fought till the last second! 🏆⚒️
🎁 Rewards will be distributed within 72h – stay tuned!
#TopBlacksmiths#Rewards
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔥 LAST DAY of Top Blacksmiths #2! 🔥
⚒️ Top 50 Blacksmiths will share 150,000 AURA + $100 $SING! 🏆
📌 Ranking rules:
✅Leaderboard is based on Points
✅If tied, higher pot tier ranks higher
⏳ EndsFeb 5, 14:00 UTC – make your final push! 🚀
#TopBlacksmiths#AuraRewards
🎤Announcement| Mystic Garden Game |Chat| Spotlight Channel
🔧 Top Blacksmiths Event Update 🔧
Worried about points? Don’t be! 🎉
If points are equal, the player with the higher pot tier will rank higher. 🏆 The leaderboard is already set up with this rule, so forge away without a worry! 🛠✨
🔥 Keep forging and climb the ranks! 🔥
#MysticGarden#TopBlacksmiths#PlayToEarn#Web3Gaming
🎤Announcement| Mystic Garden Game |Chat | Spotlight Channel