import или from и только первого. Так было задумано — поскольку импортирование является затратной операцией, по умолчанию Python делает его только один раз на файл и однократно на процесс. Более поздние операции импортирования просто извлекают объект уже загруженного модуля.В качестве одного последствия, из-за того, что код верхнего уровня в файле модуля обычно выполняется только один раз, вы можете применять его для инициализации переменных. Взгляните на содержимое файла simple.ру:
print('hello')
spam = 1
В приведенном примере операторы print и = выполняются, когда модуль импортируется в первый раз, и переменная spam инициализируется во время импортирования:
# main.py
import simple # Первая операция импортирования: загружает и выполняет код файла
simple.spam = 2
Вторая и последующие операции импортирования не выполняют код модуля повторно; они всего лишь извлекают уже созданный объект модуля из внутренней таблицы модулей Python. Таким образом, переменная spam не будет инициализироваться заново:
import simple
print(simple.spam) # 2
Если вы действительно хотите, чтобы код модуля выполнился повторно при последующей операции импортирования, это делается с помощью функции
reload.