【发布时间】:2010-12-05 13:41:24
【问题描述】:
我如何(以 Python 方式)检查参数是否是 Python 模块?没有像模块或包这样的类型。
>>> os
<module 'os' from '/usr/lib/python2.6/os.pyc'>
>>> isinstance(os, module)
Traceback (most recent call last):
File "/usr/lib/gedit-2/plugins/pythonconsole/console.py", line 290, in __run
r = eval(command, self.namespace, self.namespace)
File "<string>", line 1, in <module>
NameError: name 'module' is not defined
我可以这样做:
>>> type(os)
<type 'module'>
但是我将它与什么进行比较? :(
我制作了一个简单的模块来快速查找模块中的方法并获取它们的帮助文本。我为我的方法提供了一个模块 var 和一个字符串:
def gethelp(module, sstring):
# here i need to check if module is a module.
for func in listseek(dir(module), sstring):
help(module.__dict__[func])
当然,即使 module = 'abc': 然后 dir('abc') 也会给我字符串对象的方法列表,但我不需要它。
【问题讨论】:
-
你知道 help() 方法和 pydoc 以及类似的努力,对吧?
-
pydoc 有点不同。我需要一种简单的方法来查找方法,而无需知道它的确切名称。例如,在 os.path 中有“大小”的东西。
-
你不能输入一个模块吗?你需要它做什么?只要尝试一下,如果失败就捕获异常。
-
嗯,文档和帮助是一种自省,所以在这种情况下似乎没问题。