2009-05-14 3 views
12

Мне нужно проверить, является ли переменная модулем или нет. Как это сделать самым чистым способом?как isinstance (x, модуль)?

Мне нужно это для инициализации функции диспетчера, и я хочу, чтобы функция могла принимать либо dict, либо модуль в качестве аргумента.

+1

Кроме того, вам действительно нужно проверить тип аргумента? Если функция делает что-то совершенно другое, основанное на том, какой тип аргумента он получает, то обязательно, вы должны проверить, но в противном случае обычно более «Pythonic» не проверяет типы явно. –

+0

Пути pythonic - проверить наличие методов и переменных. Если есть слишком много, чтобы быть проверенным, то isinstance является предпочтительным. – Unknown

+0

Ну, Pythonic способ - «проверить», просто используя те, которые вам нужны, и если что-то, что должно существовать, нет, Python вызывает ошибку. Я не вижу, как может быть слишком много свойств, чтобы «проверить», если вы собираетесь использовать их все равно. –

ответ

24
>>> import os, types 
>>> isinstance(os, types.ModuleType) 
True 

(Это также работает для ваших собственных модулей Python, а также встроенные в них, как os.)

+0

Спасибо! Он отлично работает! –

4

Я хотел бы использовать это, чтобы вы не должны импортировать модуль типов:

isinstance(amodule, __builtins__.__class__) 
Смежные вопросы