Как работает функция 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
🗼Новый символ Анкары - Atatürk Cumhuriyet Kulesi - откроется в годовщину Победы при Чанаккале
18 марта - в 109-ю годовщину Победыв битве приЧанаккале - для жителей и гостей столицы откроет свои двери «Башня Республики Ататюрка», которая ознаменует собой 100-летие Турецкой Республики
Фундамент 197-метровой башни был заложен в столичном муниципалитете Кечиёрен (Keçiören) еще в 2003 г., однако строительство на некоторое время было приостановлено. Теперь работы завершены, и башню планируется открыть в понедельник, 18 марта, с участием президента Эрдогана.
В здании башни разместятся художественная галерея, где планируется проводить международные выставки, библиотека, тренажерный зал, торговый центр, на высоте 190 м. зал свадебных церемоний, на высоте 140 м. - космическая терраса и научный центр, а также кафе и вращающийся ресторан.
Башня, спроектированная архитектором Атакуле Рагыпом Булучем (Ragıp Buluç), имеет сейсмоустойчивую конструкцию. Увенчанная на вершине «Звездой Сельджуков» - общим наследием турецкой культуры, - в вечерние часы она будет освещаться системой светодиодных экранов.
Башня Республики Ататюрка должна стать новым символом столицы, с вершины которой посетители получат возможность наблюдать за мегаполисом с высоты птичьего полета ☸️
📍 Ankara #Ankara
Turkuaz / Турецкий цвет
Видео: HaberTurk
#Turchia: le operazioni della polizia si diffondono anche nel municipio di #Ankara; con l'accusa di corruzione, in merito ai concerti organizzati 4 anni fa, oggi sono finite in manette 13 persone.
#Turchia: una nuova ondata di vittime dell'alcol di produzione clandestina, a #Ankara sono 33 le persone morte e 20 sono in terapia all'ospedale, in pochi giorni.
#Turkey deploys F-16 jets in #Somalia
Turkey has deployed F-16 fighter jets to Somalia, officials told AFP on Thursday, as #Ankara seeks to expand its military footprint in the Horn of Africa.
Ankara is a key ally of Somalia, providing extensive military and economic support to the country, which has been ravaged by civil war since the early 1990s.
"Turkey has deployed F-16 jets in Somalia," a government official told AFP, without giving further details. A second official, also speaking on condition of anonymity, said the aircraft would be operated by the Turkish contingent stationed in Somalia.
"This is for our own security," the source said, stressing that the jets would not be flown by Somali personnel. Turkey opened its largest overseas military base in the Somali capital Mogadishu in 2017.
Ankara maintains a task force and an air component command there "to contribute to ....
https://web.facebook.com/AddisstandardEng/posts/pfbid032KptiLG37NfJxJbwbCJx3WCHVdMJaKhytXTrgYP3tyZF5EPKCnXVib7TjwimxGdpl
Turkish President Recep Tayyip Erdoğan said that Turkey would never want to see new conflict in the Horn of Africa, emphasizing the need for stability and encouraging countries in the region to address challenges through cooperation and dialogue.
Erdoğan emphasized respect for sovereignty and territorial integrity, cautioning against external geopolitical competition in the Horn. He reiterated #Ankara’s position that potential recognition of #Somaliland by #Israel would not contribute positively to regional stability.
He also welcomed diplomatic engagement between #Ethiopia and #Somalia, noting Turkey’s mediation efforts aimed at easing tensions.
https://addisstandard.com/?p=55223
#Iran – Esmail Baghaei, portavoce del Ministero degli Esteri:
"Confidiamo in una rapida conclusione dei negoziati con gli #USA per la rimozione delle sanzioni. Un ringraziamento particolare a #Ankara per il ruolo di mediazione."
Il dodicesimo anniversario della rivolta popolare di #Gezi, ieri sera, è stato commemorato anche a #Ankara/#Turchia. Il presidio si è concluso con l'intervento della polizia, 15 persone in detenzione provvisoria.
#USA: Due senatori presentano la proposta di sanzioni contro #Ankara/#Turchia da attivare nel caso di un rifiuto della tregua e di una zona demilitarizzata in #Rojava/#Siria.