Как работает функция 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
UN EXPERTS DEMAND SAFE PASSAGE FOR ‘MADLEEN’
JOIN THEM
Today, UN experts called for safe passage for the Madleen — our civilian ship carrying vital aid and international volunteers to Gaza.
Now we need your voice. Let’s turn international law into action.
📣 Take one minute: go to bit.ly/IsraelOnNotice and send a letter to the Israeli government, UN officials, and diplomatic missions demanding that Israel abide by international law and refrain from attacking, sabotaging or otherwise interfering with the Madleen and her mission.
Together, we can open a people’s sea corridor to Gaza. #SafePassage#BreakTheSiege#FreedomFlotilla
Six of the seven U.S. citizens aboard the Freedom Flotilla’s ‘Handala’ just read a powerful open letter to Donald Trump and the U.S. government. From the founder of Amazon Labor Union’s to a U.S. war veteran, a lawyer, a marine rescue worker, a human rights attorney, and an actor—each one delivered a searing truth: the U.S. is an active participant in Israel’s war crimes against Palestinian children in Gaza. If the U.S. does not support the deliberate starvation of children, they should guarantee safe passage of ‘Handala’.
‘Handala’ plans to deliver food, medicine, and baby formula to Gaza in a few days. They are unarmed, trained in nonviolence, and yet, are under threat by Israel. If anything happens to them, the world will know who is responsible.
Share this. Tag your politicians. Break the silence. Let the world see who’s standing on the right side of history.
#PresidentTrump#Handala#SafePassage#FreedomFlotilla#ForTheChildrenOfGaza#StandWithGaza#AllEyesOnDeck
🚨 ACTION ALERT: The UK MUST protect ‘Madleen’ 🚨
The ‘Madleen’ is a UK-flagged civilian ship sailing to Gaza with life-saving aid as part of the #FreedomFlotilla. The UK has a legal duty to protect its vessel and the civilians aboard from Israeli interference.
🇬🇧 Under international law, the UK must:
• Prevent genocide
• Reject Israel’s illegal blockade of Gaza
• Defend its flagged ship from unlawful attacks
Support us by taking action! Contact the Foreign Office and your MP. Demand protection for the ‘Madleen’ and accountability for any aggression.
Email: [email protected]
X: @FCDOGovUK
IG: @ForeignAndDevelopmentOffice
Tel: 020 7008 5000
#SafePassage#UKResponsibility#BreakTheSiege#BreakIsraelsSiege#EndComplicity#Madleen#GazaGenocide#FreedomFlotilla
🚀 Malaysian Prime Minister Confirms Safe Passage of Oil Tankers Through Hormuz Strait
On April 10, Malaysian Prime Minister Anwar confirmed that six out of seven oil tankers heading to Malaysia have successfully navigated the Hormuz Strait. According to BlockBeats, the remaining vessel is currently undergoing repairs due to mechanical issues and remains docked at the port.
#MalaysianPrimeMinister#OilTankers#HormuzStrait#SafePassage#Anwar#MechanicalIssues#BlockBeats#Malaysia