Подтвердить что ты не робот

Проверьте, является ли параметр модулем Python?

Как я могу (pythonically) проверить, является ли параметр модулем 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') предоставит мне список методов для строкового объекта, но мне это не нужно.

4b9b3361

Ответ 1

from types import ModuleType

isinstance(obj, ModuleType)

Ответ 2

>>> import inspect, os
>>> inspect.ismodule(os)
True

Ответ 3

Это кажется немного взломанным, но:

>>> import sys
>>> import os
>>> type(os) is type(sys)
True

Ответ 4

Смесь @Greg Hewgill и @Lennart Regebro отвечает:

>>> from types import ModuleType
>>> import os
>>> type(os) is ModuleType
True