Как работает функция 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
🇨🇺💥Cuba responde a Washington: no hay colapso, hay resistencia
⚡️En medio de las crecientes tensiones con Estados Unidos, Díaz-Canel afirmó que la narrativa del colapso cubano forma parte de una estrategia deliberada de hostigamiento y desgaste político.
🗣El presidente señaló que Washington ha aplicado todas las presiones posibles contra Cuba y, aun así, no ha logrado quebrar al Estado ni a su pueblo, dejando en evidencia el fracaso de esa política.
#CubaResiste
#NoAlBloqueo
#MiguelDíazCanel
#Soberanía
#Imperialismo
#EEUUAmenaza
#Resistencia
#DerechoInternacional
🇨🇺🇺🇸La asfixia económica no detiene a Cuba
⚡️Desde el programa Mesa Redonda, las autoridades cubanas detallaron un paquete de acciones para resistir el cerco económico impuesto por EE.UU., que apunta directamente al combustible, la energía y sectores estratégicos como agricultura y salud.
❗️La respuesta del Gobierno se centra en aprovechar al máximo las capacidades internas, fortalecer la producción de alimentos y acelerar la transición hacia fuentes renovables, como vía de soberanía frente al bloqueo.
#CubaResiste
#NoAlBloqueo
#Soberanía
#SancionesIlegales
#EEUUAmenaza
#EnergíaRenovable
#DerechoInternacional
#Resistencia
🇺🇸❌Cuba acusa a EE.UU. de asfixia económica y persecución energética
⚡️El canciller cubano denunció que la persecución estadounidense contra el comercio petrolero venezolano no es coyuntural, sino parte de una estrategia histórica de asfixia económica.
❗️Según Rodríguez Parrilla, Washington intenta cortar los flujos energéticos hacia Cuba y Venezuela con el objetivo de provocar desestabilización política y social, recurriendo a sanciones, amenazas y acciones extraterritoriales ilegales.
#MáximaPresión#NoAlBloqueo#EEUUAmenaza
#GuerraEconómica#PetróleoVenezolano
#Imperialismo#VenezuelaSoberana#CubaResiste
🇨🇺🔥Díaz-Canel denuncia el embargo petrolero de EE.UU.
❗️🗣El presidente Miguel Díaz-Canel afirmó que el embargo petrolero contra Cuba revela la “naturaleza fascista, criminal y genocida” de la cúpula gobernante en EE.UU.
⚡️Señaló que el gobierno de Donald Trump busca asfixiar la economía cubana imponiendo aranceles a países que comercien petróleo con la isla y que actúa bajo pretextos falsos, impulsados por quienes lucran con el sufrimiento del pueblo cubano.
#CubaResiste#NoAlBloqueo#BloqueoEsGenocida#SolidaridadConCuba#Soberanía#DerechoInternacional#NoALasSanciones#EEUUAmenaza#Imperialismo