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
。