检查参数是否为Python模块?

63 投票
7 回答
24559 浏览
提问于 2025-04-15 14:58

我怎么能用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'>    

但是我该和什么比较呢? :(

我做了一个简单的模块,可以快速找到模块中的方法并获取它们的帮助文本。我给我的方法提供一个模块变量和一个字符串:

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])

当然,即使模块是'abc',这个方法也能工作:那样的话,dir('abc')会给我字符串对象的方法列表,但我并不需要这个。

7 个回答

10

这看起来有点不太正规,不过:

>>> import sys
>>> import os
>>> type(os) is type(sys)
True
43
>>> import inspect, os
>>> inspect.ismodule(os)
True

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

110

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,程序就要做出反应。这种反应通常是通过“事件”来实现的。

事件就像是程序中的一个信号,告诉程序某件事情发生了。比如,用户点击了鼠标、按下了键盘,或者页面加载完成。这些都是事件。

为了让程序知道这些事件发生了,我们需要给它设置一些“监听器”。监听器就像是一个守卫,时刻关注着这些事件,一旦发现有事件发生,就会立即执行预先设定好的操作。

举个例子,假设我们有一个按钮,当用户点击这个按钮时,我们希望程序显示一条消息。我们可以设置一个监听器来监控这个按钮的点击事件,一旦用户点击了按钮,监听器就会触发,程序就会显示消息。

这样,通过事件和监听器的配合,我们就能让程序对用户的操作做出反应,使得程序更加互动和友好。

from types import ModuleType

isinstance(obj, ModuleType)

撰写回答