如何在Python中找到导入函数的位置?

时间:2009-11-13 16:49:12

标签: python module

我有一个带有函数的Python模块:

  == bar.py ==
  def foo(): pass
  == EOF ==

然后我将它导入全局命名空间,如下所示:

from bar import *

所以现在我可以使用函数foo。如果我打印它:

print foo

口译员高兴地告诉我:

 <function foo at 0xb7eef10c>

我是否有办法在此时发现该功能foo来自模块bar

4 个答案:

答案 0 :(得分:18)

foo.__module__应该返回bar

如果您需要更多信息,可以从sys.modules['bar']获取,__file____package__属性可能会很有趣。

答案 1 :(得分:2)

试试这个:

help(foo.func_name)

答案 2 :(得分:1)

而不是

from bar import *

使用

from bar import foo

使用from ... import *语法是一种糟糕的编程风格,因为它很难知道命名空间的元素来自哪里。

答案 3 :(得分:0)

如果您有IPython,也可以使用?

In[16]: runfile?
Signature: runfile(filename, args=None, wdir=None, is_module=False, global_vars=None)
Docstring:
Run filename
args: command line arguments (string)
wdir: working directory
File:      /Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_umd.py
Type:      function

__module__比较:

In[17]:  runfile.__module__
Out[17]: '_pydev_bundle.pydev_umd'