Как работает функция 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
Чем занять ребёнка летом?
Разрешить ему провести все каникулы, играя в компьютерные игры? 🤔
Пусть лучше займется чем-то более полезным — научится создавать свои собственные! 👾
Arduino LIGHT mini — это конструктор, с помощью которого ваш ребёнок сможет самостоятельно делать игры и анимацию: бегущую строку, головоломку, тетрис, «стрелялку» на светодиодном табло и еще 30 других проектов!
На этих выходных мы начнём программировать и научимся делать анимацию на LED-матрице с набором LIGHT mini. 🤖
Ждём ребят 8+ лет, которые хотят стать геймдизайнерами или разработчиками игр в будущем! 😎
• 3-4 июня
• Начало: 13:00 / 17:00
• Фирменный магазин ЗНАТОК в ЦДМ, 3 этаж
➡️ Подробнее о наборе: https://znatok.ru/shop/konstruktory/znatok-electronniy-constructor/for-arduino/elektronnyj-konstruktor-light-mini-dlya-arduino/
#знаток#ардуино#arduino#lightmini
Знатоки, кто помнит «DOS»? 🤓
Именно в этот день в далёком 1987 году компания IBM представила операционную систему для персональных компьютеров, которая быстро набрала популярность. Однако со временем её заменили новые ОС, такие как Windows и Linux. 🖥
Некоторые счастливчики обладали компьютерами с системой «DOS» и могли наслаждаться любимыми играми, которые нужно было загружать на дискеты. 💾
Несмотря на то, что «DOS» устарела, многим хочется поиграть в классические игры. А что, если мы сможем запрограммировать их своими руками? В этом нам поможет набор ЗНАТОК «Light mini для Arduino». 🧑🏻💻
7 минут на сборку схемы, 2 минуты на загрузку программы и перед вами любимый ретро тетрис, головоломка или даже «стрелялка» на 64х пиксельном дисплее. 👾
Создавайте светодиодные текстовые сообщения, пиксель-арты и даже анимированные картинки. Всего в наборе 39 программ. 🔥
Очень удобный язык GraphZ без труда освоит даже впервые столкнувшийся с программированием ребёнок 8-11 лет. И с легкостью анимирует свою первую гифку. 👾
Для более продвинутых пользователей этот набор откроет возможности по созданию настоящих компьютерных игр на языке С++. 🖥
Каждый проект сопровождается понятной видеоинструкцией. 📹
➡️ Подробнее: https://vk.cc/cyCcBw
#знаток#электронныйконструктор#lightmini#ардуино#arduino