Python에서 방대한 양의 데이터가 화면에 전부 출력되는 것을 제한하고 싶다면 reprlib 모듈을 활용할 수 있습니다. 이 모듈은 내장 repr() 함수와 유사하지만, 출력 크기에 제한을 둘 수 있는 기능을 제공하여 디버깅 시 매우 긴 컬렉션이나 큰 숫자로 인해 콘솔이 어지럽혀지는 것을 방지해 줍니다.
reprlib 모듈을 사용하려면 먼저 다음과 같이 임포트해야 합니다.
import reprlib
reprlib 모듈에는 다양한 클래스와 메서드가 포함되어 있으며, 주요 구성 요소는 아래와 같습니다.
reprlib.Repr 클래스
Repr 클래스는 포매팅(formatting) 서비스를 제공합니다. 이 클래스를 사용하면 내장 repr() 함수처럼 동작하는 함수를 만들 수 있으며, 객체 유형별로 크기 제한(size limit)을 세부적으로 설정할 수 있다는 점이 특징입니다.
reprlib.repr(object) 메서드
이 메서드는 내장 repr() 메서드와 유사한 문자열을 반환하지만, 대부분의 항목에 대해 최대 크기 제한이 적용됩니다. 즉, 너무 긴 데이터는 중간 부분이 생략된 형태로 축약되어 출력됩니다.
Repr 객체의 주요 속성 및 메서드
Repr 객체는 데이터 타입별로 크기 제한을 지정할 수 있는 여러 속성을 제공합니다. 그중 repr.maxlevel은 재귀적(recursive) 표현의 깊이 제한을 나타내며, 기본값은 6입니다. 이 외에도 dict, list, tuple, set 등 각 자료형에 대한 개별적인 최대 크기 제한 속성이 존재합니다.
주요 메서드와 변수는 다음 표와 같습니다.
| 번호 | 메서드/변수 및 설명 |
|---|---|
| 1 | Repr.maxlong 정수(long) 값 표현 시 허용되는 최대 자릿수. 기본값은 40입니다. |
| 2 | Repr.maxstring 문자열(string) 타입 객체에 포함될 수 있는 최대 문자 수. 기본값은 30입니다. |
| 3 | Repr.maxother 별도의 포맷 규칙이 정의되지 않은 기타 데이터의 크기를 제한합니다. |
| 4 | Repr.repr(obj) 내장 repr() 메서드와 동일하게 동작합니다. |
| 5 | Repr.repr1(obj, level) repr()의 재귀적 구현체로, 재귀 출력에 사용될 깊이(level)를 함께 지정합니다. |
예제 코드
아래 예제에서는 0부터 49까지의 팩토리얼 값을 담은 리스트를 생성한 뒤, reprlib를 통해 축약된 형태로 출력하는 과정을 보여줍니다. 또한 Repr 객체를 직접 생성하여 maxlong 값을 10으로 설정함으로써, 큰 정수가 앞뒤 일부만 표시되도록 제한하는 방법도 확인할 수 있습니다.
import reprlib import math fact_list = [math.factorial(x) for x in range(50)] print(reprlib.repr(fact_list)) myRept = reprlib.Repr() # Repr 객체 생성 후 long 크기를 10으로 설정 myRept.maxlong = 10 print(myRept.repr(fact_list[23]))
실행 결과
[1, 1, 2, 6, 24, 120, ...] 258...0000
첫 번째 출력 결과에서 볼 수 있듯이, 50개의 팩토리얼 값 리스트는 처음 몇 개 항목만 표시되고 나머지는 ...으로 생략됩니다. 두 번째 결과 역시 23번째 팩토리얼 값(매우 큰 수)이 앞 3자리와 뒤 4자리만 남기고 축약되어 출력되는 것을 확인할 수 있습니다. 이처럼 reprlib는 대용량 데이터를 간결하게 표현해야 하는 상황에서 유용하게 활용할 수 있습니다.