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