rlcompleter
— GNU readline 的補全函式¶
原始碼: Lib/rlcompleter.py
rlcompleter
模組定義了一個適合傳遞給 set_completer()
的補全函式,該函式位於 readline
模組中。
當此模組在具有 readline
模組的 Unix 平臺上匯入時,會自動建立 Completer
類的一個例項,並且將其 complete()
方法設定為 readline 補全器。此方法提供對有效的 Python 識別符號和關鍵字的補全。
示例
>>> import rlcompleter
>>> import readline
>>> readline.parse_and_bind("tab: complete")
>>> readline. <TAB PRESSED>
readline.__doc__ readline.get_line_buffer( readline.read_init_file(
readline.__file__ readline.insert_text( readline.set_completer(
readline.__name__ readline.parse_and_bind(
>>> readline.
rlcompleter
模組設計用於 Python 的 互動模式。除非 Python 使用 -S
選項執行,否則該模組會自動匯入和配置(請參閱 Readline 配置)。
在沒有 readline
的平臺上,此模組定義的 Completer
類仍然可以用於自定義目的。
- class rlcompleter.Completer¶
Completer 物件具有以下方法
- complete(text, state)¶
返回 text 的下一個可能的補全項。
當被
readline
模組呼叫時,此方法會連續呼叫,state == 0, 1, 2, ...
,直到該方法返回None
。如果為不包含句點字元(
'.'
)的 text 呼叫,它將從當前在__main__
、builtins
和關鍵字(由keyword
模組定義)中定義的名稱進行補全。如果為點號名稱呼叫,它將嘗試計算沒有任何明顯副作用的內容(函式將不會被計算,但它可能會生成對
__getattr__()
的呼叫)直到最後一部分,並透過dir()
函式查詢其餘部分的匹配項。在表示式計算期間引發的任何異常都會被捕獲、抑制,並返回None
。