Как работает функция 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
🎉 Celebrating the upcoming IHO of @RankerDAO on Hot Cross with a sweet giveaway!
🎁 $10,000 in #HOTCROSS
🎮 $10,000 in $RANKER
🏆 500 Winners ($40 each)!
To join the campaign, do the following:
🐷 Follow @hotcrossann & https://t.me/RankerDAO_ann Announcements
🐷 Join @hotcross & @RankerDAO TG Group
🐷 Follow https://twitter.com/hotcrosscom & https://twitter.com/RankerDAO?t=chy4IrKNI1nJpvz58lTjxA&s=09 on Twitter
🤞Mandatory task
♻️ + ❤️ = RT + Like
Fill the form below 👇🏼👇🏼👇🏼
https://t.co/SBRaDgUu5i
#airdrophttps://t.co/OdpjOYVT7v
🎂 We would like to wish our friends at @FrontierDotXYZ a happy 1-year anniversary for $FRONT!
🎁#Giveaway time! Woohoo!
🏆 Download the Frontier Crypto & DeFi Mobile App to receive your share of $10,000 in #HOTCROSS
🎁 To join the campaign, do the following:
🐷 Follow @hotcrossann Announcements
🐷 Join @hotcross TG Group
🐷 Follow https://twitter.com/hotcrosscom on Twitter
🔷 Follow https://twitter.com/frontierdotxyz on Twitter
🔷Follow @FrontierDotXYZ Announcements.
♻️ Retweet the event on Twitter:
Finally:
📨 Fill in the Gleam form for a chance to win!
https://t.co/VN0d12SIXGhttps://t.co/bUrhZX7I3n
Good luck 🤞.
🎊 Hot Cross hops into The Metaverse with SecondLive and an out of this world Blind Box Campaign!
🎂 To celebrate the 1-Year Anniversary of #BinanceSmartChain@bsc_official_announcement we are teaming up with @SecondLiveCommunity to give away Limited Edition #HOTCROSS blind boxes and mine $HOTCROSS during the festival.
🎁 To join the campaign, do the following:
🐷 Follow @hotcrossann Announcements
🐷 Join @hotcross TG Group
🐷 Follow Hot Cross on Twitter
🔷 Follow SecondLive on Twitter
🔷 Join @SecondLiveCommunity TG Group
♻️ Retweet the event on Twitter: https://twitter.com/hotcrosscom/status/1430478918423748613
Finally:
📨 Fill in the Gleam form for a chance to win!
https://hotcross.link/secondlive
Good luck to all in the Metaverse and Happy Anniversary to Binance Smart Chain!
🎂 Celebrating the Second hotcross IHO on #binancesmartchain.
🎁#Giveaway time! Woohoo!
20000$ in #Hotcross + $PEL for 1000 winners.
🎁 To join the campaign, do the following:
🐷 Follow @hotcrossann Announcements
🐷 Join @hotcross TG Group
🐷 Follow https://twitter.com/hotcrosscom on Twitter
🔷 Follow https://twitter.com/propelxyz
🔷Follow https://t.me/propelchat
🎆 Follow. https://t.me/propel_ann
♻️ Retweet the event on Twitter:
Finally:
📨 Fill in the Gleam form for a chance to win!
https://gleam.io/PJO9K/the-hot-cross-x-propel-iho-giveaway
Good luck 🤞.
🎂 Celebrating the first ever hotcross IHO on #binancesmartchain.
🎁#Giveaway time! Woohoo!
20000$ in #Hotcross + $toon
🎁 To join the campaign, do the following:
🐷 Follow @hotcrossann Announcements
🐷 Join @hotcross TG Group
🐷 Follow https://twitter.com/hotcrosscom on Twitter
🔷 Follow https://twitter.com/PontoonFi
🔷Follow https://t.me/pontoon_fi group
♻️ Retweet the event on Twitter:
☠☠Read article for more info - https://updates.hotcross.com/p/iho-pontoon-finance
Finally:
📨 Fill in the Gleam form for a chance to win!
https://gleam.io/tGZd0/the-hot-cross-x-pontoon-iho-giveaway
Good luck 🤞.