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

源代碼: Lib/rlcompleter.py


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

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

示例:

>>>
>>> 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è)計(jì)的。 除非 Python 是通過(guò) -S 選項(xiàng)運(yùn)行, 這個(gè)模塊總是自動(dòng)地被導(dǎo)入且配置 (參見 Readline 配置)。

在沒(méi)有 readline 的平臺(tái), 此模塊定義的 Completer 類仍然可以用于自定義行為.

Completer 對(duì)象?

Completer 對(duì)象具有以下方法:

Completer.complete(text, state)?

text 返回第 state 項(xiàng)補(bǔ)全。

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

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