При записи модулей Python, там способ предотвратить его импортируемый дважды клиентскими кодами? Точно так же, как c/c ++ заголовочные файлы делают:
#ifndef XXX
#define XXX
...
#endif
Спасибо очень!
Модули Python не импортируются несколько раз. Простое выполнение импорта два раза не приведет к перезагрузке модуля. Если вы хотите его перезагрузить, вы должны использовать оператор reload
. Вот демонстрация
foo.py
- это модуль с одной строкой
print "I am being imported"
А вот стенограмма экрана нескольких попыток импорта.
>>> import foo
Hello, I am being imported
>>> import foo # Will not print the statement
>>> reload(foo) # Will print it again
Hello, I am being imported
Импорты кэшируются и выполняются только один раз. Дополнительный импорт требует только времени поиска в sys.modules
.