Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hàm hoàn thành (Completion function) cho GNU readline trong Python

Module readline của Unix có cơ chế hoàn thành tab (tab completion). Để có tính năng này, ta phải dùng module rlcompleter. Nó có thể dùng trong chế độ tương tác (interactive mode) của Python.

Để dùng module này, nên nhập bằng:

import rlcompleter

Có một lớp gọi là Completer class:

Phương thức Completer.complete(text, state)

Trả về đầu ra hoàn thành tab. Nếu có dấu '.' trong text, nó sẽ cố gắng lấy tất cả các thành viên liên quan của lệnh đó. Khi không có dấu '.', nó chỉ hoàn thành văn bản.

Mã ví dụ

import rlcompleter
import sys

my_completer = rlcompleter.Completer()
phrase_list = ['co', 'sys.m', 'cal']

for phrase in phrase_list:
    print(phrase + ' (TAB): ', end='')
    try:
        for i in range(50):
            terms = my_completer.complete(phrase, i)
            if terms is None:
                break
            print(terms, end='\t')
    except:
        pass
    print()

Kết quả

$ python3 example.py
co (TAB): continue  compile(  complex(  copyright(
sys.m (TAB): sys.maxsize  sys.maxunicode  sys.meta_path  sys.modules
cal (TAB): callable(