Как работает функция 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
🎉🎉 Celebrate with us the impressive metrics within 🔟 days of Beta Launch🚀📈:
- 30K active users from 50 countries
- 10.2K smart alert configs are set
- 1.5M interactive maps are visualized
🌐🔗 We're honoured to harness #AI and #Onchaindata to empower our users for success!
🎯There is still a chance to share our 🎁$2,000🎁 reward pool and win the Beta Access Code!!
🎮Jump in our Zealy quest board now! We are distributing the code every week to highly engaging members. 🍀👇
https://zealy.io/c/spotonchain/questboard
🚀 Bitcoin's Potential Bear-Market 'Iron Bottom' Predicted by Analyst
A CryptoQuant analyst has projected that Bitcoin might establish a bear-market 'iron bottom' within the $55,000–$60,000 range by the end of 2026. According to NS3.AI, this prediction is grounded in on-chain indicators, notably the MVRV Z-score, which has moderated but remains above negative levels.
#Bitcoin#Crypto#BearMarket#CryptoAnalysis#MVRV#OnChainData#CryptoPredictions#BTC
🚀 Satoshi Protocol Layer2 Settlement Network Launches with Upgrades
The Satoshi Protocol Layer2 settlement network officially launched on April 6, introducing enhancements in on-chain data statistics and computational capabilities. According to ChainCatcher, the Layer2 network now supports deep cumulative calculations on-chain, allowing for a more accurate reflection of team sizes and business data, thereby improving processing efficiency in complex scenarios.
In terms of governance, the protocol has transferred core permissions to a multi-signature contract and adopted a dual-track governance model, with developers and core community members each holding 50% of the decision-making power. The execution threshold is set at 65%, further enhancing decentralization.
This upgrade marks the protocol's transition towards community autonomy, providing a reference for technology and governance in the DeFi sector.
#SatoshiProtocol#Layer2#Blockchain#DeFi#Governance#Decentralization#OnChainData#NetworkLaunch#Crypto#MultiSignature#ProtocolUpgrade#CommunityAutonomy