Как препятствовать тому, чтобы модуль был импортирован дважды?

При записи модулей Python, там способ предотвратить его импортируемый дважды клиентскими кодами? Точно так же, как c/c ++ заголовочные файлы делают:

#ifndef XXX
#define XXX
...
#endif

Спасибо очень!

29
задан SilentGhost 8 January 2010 в 17:56
поделиться

2 ответа

Модули 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
40
ответ дан 28 November 2019 в 01:04
поделиться

Импорты кэшируются и выполняются только один раз. Дополнительный импорт требует только времени поиска в sys.modules .

18
ответ дан 28 November 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: