Как работает функция 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
#Sinfonía29#Mozart#JohannesKlumpp
Titulo:La Sinfonía n.º 29 en La mayor, K. 201/186a
Autor: Wolfgang Amadeus Mozart
Movimientos:
🎵I. Allegro moderato, 2/2.
🎵 II. Andante, 2/4.
🎵 III. Menuetto: Allegretto – Trio, 3/4.
🎵 IV. Allegro con spirito, 6/8.
Interpretación:
Orquesta de Cámara Folkwang
Director:
Johannes Klumpp
Fuente:🎼
@ClasicaAlAtardecer
#Sinfonía29#Mozart#JohannesKlumpp
LA SINFONÍA N.º 29 EN LA MAYOR, K. 201/186a
La Sinfonía n.º 29 en la mayor, K. 201/186a, fue escrita por Wolfgang Amadeus Mozart y completada el 6 de abril de 1774. Se trata, junto con la Sinfonía n.º 25, una de las más conocidas de sus sinfonías tempranas. Stanley Sadie la describe como "un monumento... personal en el tono, es quizás más individual en la búsqueda de una intimidad, en el estilo de la música de cámara pero con un carácter vehemente e impulsivo."
La sinfonía está compuesta para dos oboes, dos trompas, y cuerdas.
La sinfonía consta de cuatro movimientos dispuestos según el esquema clásico:
🎵I. Allegro moderato, 2/2.
🎵 II. Andante, 2/4.
🎵 III. Menuetto: Allegretto – Trio, 3/4.
🎵 IV. Allegro con spirito, 6/8.
La Sinfonía en La se terminó en abril. Comienza suavemente en las cuerdas, con una caída de octava, y el tema se repite posteriormente saltando octavas cuando se unen los oboes y las trompas. El segundo tema, introducido por los primeros violines, está marcado por un trino recurrente. El segundo movimiento es el corazón palpitante de la sinfonía, una serenata para violines apagados que, citando a Edward Downes (el fallecido musicólogo, no el fallecido director de orquesta), revela "una encantadora ornamentación rococó y una delicada textura que parece más cercana a la de un cuarteto de cuerda que a la de una sinfonía".
El tercer movimiento, tras una apertura aparentemente gentil, evoluciona hacia un minueto propulsivo, con ritmos punteados y fortissimos repentinos. En este caso son especialmente llamativas las octavas de viento al unísono con las que concluye cada una de sus dos secciones. El final es un asunto elegante y armónicamente rico, al estilo de los finales de "caza" de Haydn.
@ClasicaAlAtardecer