この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
組み込みのインポーターは、インターネットからのモジュールのインポートをサポートしていないため、インターネットは検索されません。カスタムインポーターをインストールすると、インターネット調査help()
がトリガーされる可能性があります。
利用可能なモジュールが多数ある場合、この操作には時間がかかる場合があります。一部のモジュールは、インポートにかなりの時間がかかる場合があります (たとえばnumpy
、scipy
ロードに数秒かかる場合があります)。