Как найти, какая функция стала из модуля «from — import»

#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)