Документация для reload()
фактически дает фрагмент кода, который, как мне кажется, должен работать для ваших целей, по крайней мере, в обычном случае.Вы бы сделали что-то вроде этого:
try:
reloading
except NameError:
reloading = False # means the module is being imported
else:
reloading = True # means the module is being reloaded
Что это действительно делает, так это определяет, импортируется ли модуль «чисто» (например, в первый раз) или перезаписывает предыдущий экземпляр того же модуля.В обычном случае «чистый» импорт соответствует оператору import
, а «грязный» импорт соответствует reload()
, поскольку import
действительно импортирует модуль только один раз, при первом его выполнении (для каждого данногомодуль).
Если вам каким-то образом удается заставить последующее выполнение оператора import
выполнить что-то нетривиальное, или если вам каким-то образом удается впервые импортировать свой модуль с помощью reload()
, или если вывозиться с механизмом импорта (через модуль imp
или тому подобное), все ставки отключены.Другими словами, не рассчитывайте на то, что всегда работает в любой возможной ситуации.
PS Тот факт, что вы задаете этот вопрос, заставляет меня задуматься, делаете ли вы что-то, что вы, вероятно,не должен делать, но я не буду спрашивать.