유닉스(Unix)의 readline 모듈에는 탭 키를 이용한 자동 완성(tab completion) 메커니즘이 내장되어 있습니다. 파이썬에서 이러한 기능을 활용하려면 rlcompleter 모듈을 사용해야 하며, 이 모듈은 파이썬의 대화형(interactive) 모드에서도 손쉽게 적용할 수 있습니다.
rlcompleter 모듈 가져오기
모듈을 사용하려면 먼저 다음과 같이 임포트해야 합니다.
import rlcompleter
이 모듈에는 자동 완성을 담당하는 Completer 클래스가 정의되어 있습니다.
Completer.complete(text, state) 메서드
이 메서드는 탭 완성 결과를 반환하는 역할을 합니다. 동작 방식은 다음과 같습니다.
- 입력된 텍스트에 마침표(
.)가 포함된 경우, 해당 객체나 모듈과 관련된 모든 멤버(속성·메서드)를 탐색하여 후보를 제시합니다. - 마침표가 없는 경우에는 입력된 텍스트 자체를 키워드나 내장 함수 이름으로 완성합니다.
state 인자는 완성 후보를 하나씩 순회할 때 사용되며, 더 이상 후보가 없으면 None을 반환합니다.
예제 코드
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()실행 결과
$ python3 example.py co (TAB): continue compile( complex( copyright( sys.m (TAB): sys.maxsize sys.maxunicode sys.meta_path sys.modules cal (TAB): callable(
대화형 모드에서 탭 완성 활성화하기
실제 파이썬 셸에서 탭 키로 자동 완성을 사용하려면 readline 바인딩 설정이 필요합니다. 다음 코드를 실행하면 대화형 세션에서 탭 완성이 즉시 활성화됩니다.
import readline
import rlcompleter
readline.parse_and_bind('tab: complete')이처럼 rlcompleter 모듈은 코드 작성 시 사용 가능한 키워드, 내장 함수, 모듈의 멤버를 빠르게 확인할 수 있어 개발 생산성을 높여주는 유용한 도구입니다.