Как работает функция 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
Дальше у нас «Чаша весны / Cup of Spring».
Как-то уже упоминала про эту дораму в контексте того, что читаю новеллу, по которой она снята, и любопытно, как эту историю перенесут на экран.
Новелла интересная и в некоторых моментах даже провокационна. Главный герой тут из разряда «вижу бабу — не вижу препятствий», положил глаз и всё, что можно, на главную героиню, которая чуть ли не на 15 лет младше его. Люто этого кринжую при чтении. Семейка у главной героини — легче с вр.агами подружить, чем с ними, все такие гадки, плетут интриги и подставы, но мне нравится.
#Любопытный_сериальчик#Чашавесны#CupofSpring
Март подходит к концу, а значит, пора выбирать, на чем будем фиксировать свое внимание в апреле.
Первая — это, конечно, «Любовь за гранью смерти / Love Beyond the Grave», показ которой начнется 28 марта.
Дальше многострадальная «Завеса теней / Veil of Shadows»: то ли выйдет она в апреле, то ли не выйдет. Каждый день вокруг нее проблемы и слухи. Но я верю в что выйдет.
Ещё обещают в начале апреля «Возрождение из ледяного озера / Rebirth», склонна в это верить, уж много за последнее время контента по ней пошло.
Также проскальзывают слухи о выходе «Чаша весны / Cup of Spring», можно сказать, что её вообще не жду, но сейчас читаю новеллу, по которой она снята, и мне просто любопытно заглянуть в дорамку.
Ну и конечно, «Призрачный божественный сыщик / Shadow Punisher», где снялся Ло Юньси, тоже обещают выпустить в апреле.
И единственное, что не в историческом сеттинге, это «Исповедь в темноте / Light to the Night». Детектив, чтоб разбавить эту вечеринку халатиков.
#Любопытный_сериальчик#Любовьзаграньюсмерти#LoveBeyondtheGrave#Завесатеней#VeilofShadows#Возрождениеизледяногоозера#Rebirth#Чашавесны#CupofSpring#Призрачныйбожественныйсыщик#ShadowPunisher#Исповедьвтемноте#LighttotheNight