该help()
命令不在互联网上搜索;“在线”仅仅意味着您可以交互地使用它,在文档中它称之为“内置帮助系统”,这不太模棱两可。它的作用是遍历所有PYTHONPATH
模块并尝试导入每个模块,以查看系统中哪些是可用模块。
这是用于获取模块列表的源代码(您可以在Lib/pydoc.py
python 源代码中找到):
def listmodules(self, key=''):
if key:
self.output.write('''
Here is a list of matching modules. Enter any module name to get more help.
''')
apropos(key)
else:
self.output.write('''
Please wait a moment while I gather a list of all available modules...
''')
modules = {}
def callback(path, modname, desc, modules=modules):
if modname and modname[-9:] == '.__init__':
modname = modname[:-9] + ' (package)'
if modname.find('.') < 0:
modules[modname] = 1
def onerror(modname):
callback(None, modname, None)
ModuleScanner().run(callback, onerror=onerror)
self.list(modules.keys())
self.output.write('''
Enter any module name to get more help. Or, type "modules spam" to search
for modules whose descriptions contain the word "spam".
''')
在ModuleScanner
类简单地遍历内置模块和pkgutil.walk_packages
找到的模块的地方,这个函数最终调用iter_modules
导入器对象的方法。内置导入器不支持从 Internet 导入模块,因此不会搜索 Internet。如果您安装自定义导入器,help()
则可能会触发互联网研究。
如果您有很多可用的模块,则此操作可能需要一些时间。一些模块也可能需要大量时间来导入(例如numpy
,scipy
加载等可能需要几秒钟的时间)。