rlcompleter — GNU readline 的補全函式¶
原始碼: Lib/rlcompleter.py
rlcompleter 模組定義了一個補全函式,適合作為引數傳遞給 readline 模組中的 set_completer()。
當在具有 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。