Как работает функция 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
Want a new, affordable home near your parents/ nature/ the city? Say no more, fam! 😎
We’re developing new housing areas across the island to meet housing demand, including Chencharu in Yishun, Bayshore, Mount Pleasant, Keppel, and Pearl’s Hill. With a wide variety of flats being planned, there will be a home for every budget and every need. #COS2024
#COS2024 MSE announced initiatives that will help Singapore press on towards net zero, protect our coastlines, and ensuring Singapore’s food security and safety. More ⬆️
Infographics: MSE
At #COS2024, the Singapore Government Partnerships Office was launched to facilitate engagements with Singaporeans. MCCY will also continue to strengthen the culture of care in Singapore to support lower-income families and those in need.
Infographics: MCCY
Sports, and arts and heritage are integral to Singapore’s shared identity. MCCY announced at #COS2024 enhanced support and new developments to encourage a vibrant sporting and arts environment.
Infographics: MCCY
At #COS2024, MOH highlighted key efforts to improve preventive health and aged care, and to expand hospital capacity and settings to include mental health services. MediShield Life will also be enhanced to provide Singaporeans with greater assurance.
More info ⬆️
Infographics: MOH
#COS2024 Find out how MOT is enhancing our transport systems to improve inclusivity, connectivity and sustainability for our commute, and growing the industries for livelihoods. ⬆️
Infographics: MOT
Key housing initiatives introduced at #COS2024 include more homes in the pipeline to increase supply, increased support for young and lower-income families to own their home, and building of elder-friendly homes and neighbourhoods.
More info ⬆️
Infographics: MND
#COS2024 MND announced new initiatives that keep public housing affordable, rejuvenate heartlands, and create a sustainable and inclusive city. Check out the initiatives ⬆️
Infographics: MND
#COS2024 Ministry of Manpower will continue strengthening support for workers and businesses amid global economic uncertainties. These include uplifting older and lower-wage workers through changes to the CPF system, enhanced Workfare schemes, and introducing Tripartite Guidelines on Flexible Work Arrangement Requests for progressive workplaces. Find out more ⬆️
Infographics: MOM
At #COS2024, MOE introduced various initiatives that will help re-envision learning, helping all Singaporean students pursue their dreams. Find out more ⬆
Infographics: MOE
#COS2024 MCI announced its plans to invest in Singaporeans and local businesses to help them leverage emerging technologies to remain competitive.
Infographic: MCI