#python-3.x
#python-3.x
Вопрос:
from foo.bar import bar
print(get_namespace(bar))
Я хочу, чтобы приведенный выше фрагмент кода печатал «foo.bar.bar»
Как это сделать в python3?
Комментарии:
1. Это
bar
функция или подмодуль?
Ответ №1:
Каждый импортированный модуль указан в sys.modules
. Таким образом, вы можете выполнить итерацию sys.modules
, чтобы найти путь, связанный с модулем:
import sys
def get_module_name(mod):
for path, module in sys.modules.items():
if mod == module:
return path
raise ValueError('module not found')
from foo.bar import bar
print(get_module_name(bar))
# foo.bar.bar
Поскольку слово namespace
зарезервировано для другой концепции, я переименовал функцию get_module_name
.