Как найти, откуда была импортирована функция в Python?
у меня есть модуль Python с функцией в нем:
== bar.py ==
def foo(): pass
== EOF ==
и затем я импортирую его в глобальное пространство имен следующим образом:
from bar import *
Итак, функция foo
доступен для меня. Если я его напечатаю:
print foo
переводчик радостно говорит мне:
<function foo at 0xb7eef10c>
есть ли способ для меня узнать эту функцию foo
вышел из модуля bar
на данный момент?
3 ответов
foo.__module__
должен возвратить bar
Если вам нужна дополнительная информация, вы можете сделать его из sys.modules['bar']
, его __file__
и __package__
атрибуты могут быть интересные.
вместо
from bar import *
использовать
from bar import foo
С помощью from ... import *
синтаксис-плохой стиль программирования именно потому, что он затрудняет понимание того, откуда берутся элементы вашего пространства имен.