Использование импортированных модулей в нескольких файлах - PullRequest
1 голос
/ 03 декабря 2010

Этот вопрос немного тупой, но я должен это знать. Есть ли способ использовать импортированные модули внутри других импортированных модулей?

Я имею в виду, если я сделаю это:

-основный файл-

import os  
import othermodule  

othermodule.a()

-othermodule-

def a():
  return os.path.join('/', 'example') # Without reimporting the os module

Модуль os не распознается файлом. Есть ли способ «повторно» использовать модуль os?

Ответы [ 3 ]

5 голосов
/ 03 декабря 2010

Нет необходимости делать это, Python загружает модули только один раз (если вы не выгружаете их).

Но если у вас действительно есть ситуация, в которой модуль не может получить доступ к стандартной библиотеке (не забудьте объяснить ???), вы можете просто получить доступ к модулю os внутри основного модуля (например, mainfile.os, модули). являются просто переменными при импорте в пространство имен модуля).

Если модуль os уже загружен, вы также можете получить к нему доступ с помощью sys.modules["os"].

3 голосов
/ 03 декабря 2010

Вы также должны поместить import os в othermodule.py (или вместо этого, если «основной файл» не нуждается в самой ОС). Это особенность; это означает, что othermodule не нужно заботиться о том, что мусор находится в "основном файле". Python не будет читать файлы для os дважды, поэтому не беспокойтесь об этом.

Если по какой-то причине вам нужно получить доступ к переменным в главном файле, вы можете сделать это с помощью import __main__, но этого следует избегать.

Если вам нужно перечитать модуль после того, как он уже был импортирован, вам, вероятно, следует использовать execfile вместо import.

1 голос
/ 03 декабря 2010

Python импортирует модуль только один раз.Любые последующие вызовы импорта, просто получить доступ к существующему объекту модуля.

...