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