rlcompleter --- GNU readline 的補全函數?

源代碼: Lib/rlcompleter.py


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

當此模塊在具有可用的 readline 模塊的 Unix 平臺被導入, 一個(gè) Completer 實(shí)例將被自動(dòng)創(chuàng )建并且它的 complete() 方法將設置為 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 的 交互模式 而設計的。 除非 Python 是通過(guò) -S 選項運行, 這個(gè)模塊總是自動(dòng)地被導入且配置 (參見(jiàn) Readline 配置)。

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

Completer 對象?

Completer 對象具有以下方法:

Completer.complete(text, state)?

text 返回第 state 項補全。

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

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