#python #import #module #libraries #python-importlib
#python #импорт #модуль #библиотеки #python-importlib
Вопрос:
У меня есть вопрос относительно функции «from — import». Например У меня есть 3 файла: one.py , two.py , three.py .
Содержимое three.py файл:
from one import *
from two import *
variable1
variable2
def func1()
def func2()
def func3()
Допустим, у меня нет разрешения на доступ к двум файлам выше, и я не могу их открыть. Мой вопрос в том, как проверить, какая функция и какая переменная становятся из one.py или two.py файл? Есть ли какая-либо команда или что-то в этом роде?
Комментарии:
1. проверьте
dir(one)
, если вы используетеimport one
. Если вы используетеfrom one import *
, то просто используйтеdir()
?
Ответ №1:
Вы можете использовать getfile
из inspect
модуля
Return the name of the (text or binary) file in which an object was defined. This will fail with a TypeError if the object is a built-in module, class, or function.
https://docs.python.org/3/library/inspect.html#inspect.getfile
Ответ №2:
print(func1.__module__)
print(func2.__module__)
print(func3.__module__)
Ответ №3:
Вы можете применить try-except к оператору импорта.
try:
from one import *
from two import *
except ImportError:
# Override variables after failed import
var1 = ...
var2 = ...
Ответ №4:
вы можете вызвать функцию переменную с пространством имен модуля
и проверьте с помощью try / за исключением того, что вы не выдаете ошибку при импорте модулей
try:
from one
one.foo()
one.variable1
except ImportError as exception:
print(exception)
try:
from two
two.foo()
two.variable1
except ImportError as exception:
print(exception)