rlcompleter --- GNU readline 的補全函數(shù)?

源代碼: Lib/rlcompleter.py


rlcompeleter 通過補全有效的 Python 標(biāo)識符和關(guān)鍵字定義了一個適用于 readline 模塊的補全函數(shù)。

當(dāng)此模塊在具有可用的 readline 模塊的 Unix 平臺被導(dǎo)入, 一個 Completer 實例將被自動創(chuàng)建并且它的 complete() 方法將設(shè)置為 readline 的補全器.

示例:

>>>
>>> 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 的 交互模式 而設(shè)計的。 除非 Python 是通過 -S 選項運行, 這個模塊總是自動地被導(dǎo)入且配置 (參見 Readline 配置)。

在沒有 readline 的平臺, 此模塊定義的 Completer 類仍然可以用于自定義行為.

Completer 對象?

Completer 對象具有以下方法:

Completer.complete(text, state)?

text 返回第 state 項補全。

如果指定的 text 不包含句點字符 ('.'),它將根據(jù)當(dāng)前 __main__, builtins 和保留關(guān)鍵字(定義于 keyword 模塊)所定義的名稱進行補全。

如果為帶有句點的名稱執(zhí)行調(diào)用,它將嘗試盡量求值直到最后一部分為止而不產(chǎn)生附帶影響(函數(shù)不會被求值,但它可以生成對 __getattr__() 的調(diào)用),并通過 dir() 函數(shù)來匹配剩余部分。 在對表達(dá)式求值期間引發(fā)的任何異常都會被捕獲、靜默處理并返回 None。