Как работает функция 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
🇹🇷 Au moins sept personnes ont été tuées et autant ont été blessées dans une collision sur une route reliant Antalya à Isparta, dans le sud de la Turquie, a rapporté la chaîne de télévision TRT Haber.
#turquie#collision#victimes
🪐 The galaxy known as the Tadpole Galaxy (UGC 10214), about 420 million light-years away in the constellation Draco, is famous for its long, sweeping tail that stretches over 280,000 light-years. This striking "tadpole" shape was created when another galaxy passed close by, pulling out a stream of stars, gas, and dust—a cosmic encounter that gave the Tadpole Galaxy its unforgettable, bizarre silhouette among the galaxies. ✨
#galaxies⚡#shapes⚡#collision⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🇫🇷 La situation sur les lieux de la collision entre un train à grande vitesse (TGV) et un poids lourd transportant du matériel militaire dans la commune de Nœux-les-Mines (Pas‑de‑Calais), dans le nord de la France.
#france#train#collision
🇺🇸🛬 Deux personnes ont perdu la vie et plus de dix ont été blessées dans la collision entre un véhicule et un avion à l'aéroport LaGuardia de New York. Au total, au moins 41 personnes avaient initialement été hospitalisées, a indiqué la directrice exécutive de l'Autorité portuaire de New York et du New Jersey, Kathryn Garcia.
#étatsunis#avion#collision#bilan
🇮🇩Le bilan de la collision entre deux trains dans la province de Java occidental en Indonésie s’alourdit à 14 morts et 84 blessés, a rapporté l’agence Antara.
#indonésie#trains#collision
🇮🇩 Au moins 3 personnes ont été tuées et 29 autres blessées dans une collision entre deux trains en Indonésie, rapporte Antara.
#indonésie#trains#collision
🪐 The asteroid (234) Barbara is a main-belt asteroid with a unique, highly irregular shape that may be the result of an ancient cosmic collision. At over 45 kilometers wide, Barbara is notable because radar observations revealed its silhouette resembles two objects fused together, an unusual configuration that would cause catastrophic damage if an object like this ever entered a path toward Earth. ✨
#asteroids⚡#threat⚡#collision⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🇺🇸 Deux bus sont entrés en collision près du Pentagone, faisant plus de 20 blessés. Selon la chaîne WUSA9, au moins dix des blessés sont des employés du département de la Défense américain.
La police du Pentagone a confirmé l'information et a annoncé la fermeture complète du terminal de transport et de la station de métro situés à proximité du département.
#bus#collision#pentagon
🇺🇸🇨🇦Un avion d'Air Canada Express est entré en collision avec un véhicule de piste sur le tarmac à l'aéroport LaGuardia (LGA) de New York, entraînant une fermeture temporaire, rapporte le service de suivi des vols Flightradar sur le réseau social X.
Selon le journal New York Post, au moins quatre personnes ont été blessées, tandis que la chaîne NBC News a rapporté la mort du pilote et du copilote de l’aéronef.
#étatsunis#avion#tarmac#collision
🇩🇰 Une collision frontale entre deux trains survenue près du village de Kagerup, au Danemark, a fait dix-sept blessés, dont quatre personnes se trouvent dans un état critique, a rapporté l’agence Ritzau.
#danemark#trains#collision#victimes