Импортировать тот же модуль Python, если я вызываю функцию из другого файла - PullRequest
0 голосов
/ 08 сентября 2018

Мне было интересно, что произойдет, если я вызову модуль из другого файла, который импортирует тот же модуль Python, который уже импортирован при основном вызове, импортируется ли он дважды? Если да, как я могу предотвратить это? Каков рекомендуемый способ для этого?

В следующем примере модуль time импортируется в оба файла. В качестве альтернативного решения я передал time module в качестве аргумента для вызова модуля, который находится в другом файле.


Пример:

hello.py

from module import module
import time

time.sleep(1)
module();

module.py

import time; # Already imported in hello.py

def module(): #{
    time.sleep(1)
    print('hello')  
#}

Альтернатива: Я передаю time модуль в качестве аргумента в функцию module(), расположенную в module.py.

hello.py

from module import module
import time

time.sleep(1)
module(time);

module.py

def module(time): #{ 
    time.sleep(1)
    print('hello')
#}

1 Ответ

0 голосов
/ 08 сентября 2018

Модуль размещается и выполняется только один раз, независимо от того, сколько раз он был импортирован. Он сохраняется в диктовке sys.modules, поэтому последующие операции импорта - это просто поиск по словарю. Нет причин пытаться избежать нескольких импортов одного и того же модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...