rlcompleter
— Kompletteringsfunktion för GNU readline¶
Källkod: Lib/rlcompleter.py
Modulen rlcompleter
definierar en kompletteringsfunktion som är lämplig att skicka till set_completer()
i modulen readline
.
När denna modul importeras på en Unix-plattform med modulen readline
tillgänglig, skapas automatiskt en instans av klassen Completer
och dess metod complete()
anges som readline completer. Metoden ger komplettering av giltiga Python identifierare och nyckelord.
Exempel:
>>> 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.
Modulen rlcompleter
är utformad för att användas med Pythons interaktiva läge. Om inte Python körs med alternativet -S
importeras och konfigureras modulen automatiskt (se Konfiguration av läslinje).
På plattformar utan readline
kan klassen Completer
som definieras av denna modul fortfarande användas för anpassade ändamål.
- class rlcompleter.Completer¶
Completer-objekt har följande metod:
- complete(text, state)¶
Returnerar nästa möjliga komplettering för text.
När den här metoden anropas av modulen
readline
, anropas den successivt medstate == 0, 1, 2, ...
tills metoden returnerarNone
.Om den anropas för text som inte innehåller ett punkttecken (
'.'
), kommer den att komplettera från namn som för närvarande definieras i__main__
,builtins
och nyckelord (som definieras av modulenkeyword
).Om den anropas för ett punktat namn försöker den utvärdera allt utan uppenbara bieffekter (funktioner utvärderas inte, men den kan generera anrop till
__getattr__()
) fram till den sista delen, och hittar matchningar för resten via funktionendir()
. Alla undantag som uppstår under utvärderingen av uttrycket fångas upp, tystas ochNone
returneras.