Как работает функция 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
🇷🇺🇮🇹⛷ Le skieur alpin russe Alexeï Bougaïev occupe la tête du classement après la première manche du slalom aux Jeux paralympiques disputés en Italie.
Le Russe a réalisé un temps de 45,39 secondes. M. Bougaïev concourt dans la catégorie LW6, qui regroupe les athlètes présentant une déficience d’un membre supérieur.
La seconde manche doit se dérouler plus tard dans la journée de dimanche. Lors de ces Jeux paralympiques, Alexeï Bougaïev a déjà remporté deux médailles de bronze, en descente et en slalom géant.
Âgé de 28 ans, Alexeï Bougaïev est triple champion paralympique. Les Jeux paralympiques s’achèvent le 15 mars.
#russie#paralympiques#ski
🇷🇺🇮🇹 Le skieur russe Ivan Goloubkov a remporté la médaille d'or dans la course à départ séparé de 20 km en position assise aux Jeux paralympiques en Italie.
L'athlète a réalisé un temps de 51 minutes et 55,0 secondes. Ivan Goloubkov concourt dans la catégorie LW11,5, qui regroupe des athlètes ayant des déficiences significatives des fonctions des jambes.
Ivan Goloubkov, 30 ans, est champion du monde à six reprises et a remporté neuf fois la Coupe du monde en ski de fond et en biathlon.
#russie#paralympiques#ski
🇷🇺🇮🇹⛷ L'équipe de Russie a pris la troisième place au classement des médailles des Jeux paralympiques en Italie.
Les athlètes russes ont remporté 8 médailles d'or, 1 d'argent et 3 de bronze. La 1ère place est assurée par l'équipe de Chine (15-13-16), la 2ème place appartient aux Américains (12-5-6). 2 médailles d'or restent encore à attribuer aux Jeux paralympiques.
6 athlètes russes ont participé aux Jeux paralympiques. Les athlètes de Russie ont concouru aux Jeux paralympiques avec les symboles nationaux pour la première fois depuis 12 ans.
La skieuse alpine Varvara Vorontchikhina a remporté 2 médailles d'or, une d'argent et une de bronze. Le skieur alpin Alexeï Bougaïev a gagné l'or et 2 médailles de bronze. La fondeuse Anastassia Baguian est devenue triple championne paralympique, et le fondeur Ivan Goloubkov est monté 2 fois sur la plus haute marche du podium
#russie#paralympiques#champions