Как найти, откуда была импортирована функция в 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__ атрибуты могут быть интересные.


попробуйте это:

help(foo.func_name)

вместо

from bar import *

использовать

from bar import foo

С помощью from ... import * синтаксис-плохой стиль программирования именно потому, что он затрудняет понимание того, откуда берутся элементы вашего пространства имен.