Как работает функция 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
Dr. Roberto Morales Ojeda
(@DrRobertoMOjeda) en X
En la sede del Comité Central conmemoramos el Día de la Rebeldía Nacional teniendo como brújula el legado del Comandante en Jefe y la exhortación de @DiazCanelB a trabajar por hacer de cada día un #26deJulio.También entregamos el carnet a nuevos miembros del PCC y la UJC
https://x.com/DrRobertoMOjeda/status/1947718755200733410
Este sábado en el municipio de #Holguín fueron inaguradas varias obras en saludo al Día de la Rebeldía Nacional el próximo #26deJulio, cuando se cumplen 71 años del asalto a los Cuarteles Moncada y Carlos Manuel de Céspedes.
El recorrido contó con la presencia de Osmani Viñals García, primer secretario del Comité Municipal del PCC en Holguín, Rafael Antonio Brown Sutherland, presidente de la Asamblea Municipal del Poder Popular y Yunior Torres Almaguer, intendente municipal.
En el reparto Luz del propio consejo popular fueron remozados los consultorios 11,12,13 y 14 del médico de la familia donde se trabajó en la impermeabilización, cambio de carpintería, pintura, resane de muros, reparación de la red hidráulica sanitaria, con una inversión valorada en los 2.1 millones de pesos.
El reparto Piedra Blanca del consejo popular Vista Alegre fue testigo de la inauguración del consultorio 1 que atiende a una población aproximada de 1200 pacientes. En la obra se ejecutó un presupuesto de 3468.1 millones de pesos donde se cambió la carpintería, hidrosanitaria, la electricidad, pintura y enchapes.
Los habitantes del reparto La Quinta perteneciente a la circunscripción 26 del consejo popular Vista Alegre agradecieron el nuevo taller de servicios técnicos donde se trabajó en el enchape, cambio de carpintería, cubierta y pintura.
En la circunscripción 31 fueron entregadas el mes pasado a madres con tres hijos y otros casos especiales 3 viviendas en la calle 14, obra ejecutada por la constructora DOMUS. El periplo concluyó en el combinado deportivo Jesús Manuel Feliú Leyva donde se reanimó y pintó el gimnasio de pesa y gimnasia rítmica.
✒️ y 📸 John Alex Fernández Leyva
El municipio de #Moa conquistó la sede del acto provincial por el #26deJulio en conmemoración a los asaltos a los cuarteles Moncada y Carlos Manuel de Céspedes, el 26 de julio de 1953.
A 71 años de aquellos sucesos acaecidos en Santiago de Cuba y Bayamo la fecha se conmemora en fraterna emulación entre los diferentes territorios para obtener la sede.
La emulación provincial otorgó la condición de Destacados a los municipios de Rafael Freyre y Gibara, mientras los municipios de Sagua de Tánamo y #Holguín recibieron también el Reconocimiento.
La noticia se conoció en encuentro entre las autoridades y la prensa en el territorio.
Felicidades a los moenses!
📸 tomada de Internet