python:: 파이썬 디버깅 도구 - print()와 ic() 비교



## print() 함수

**장점:**
1. 파이썬 내장 함수로 별도 설치가 필요 없음
2. 간단하고 직관적인 사용법
3. 다양한 옵션(sep, end, file 등)으로 출력 형식 조정 가능

**단점:**
1. 변수명을 별도로 표시하지 않아 여러 변수 추적 시 혼란 가능
2. 복잡한 객체 출력 시 가독성이 떨어짐

**예시:**
```python
# 기본 사용법
name = "홍길동"
age = 30
print(name, age)  # 홍길동 30

# 디버깅 목적으로 사용할 때는 보통 변수명을 포함해야 함
print(f"name: {name}, age: {age}")  # name: 홍길동, age: 30

# 리스트 내용 확인
numbers = [1, 2, 3, 4, 5]
print("numbers:", numbers)  # numbers: [1, 2, 3, 4, 5]
```

## ic() 함수 (icecream 패키지)

**장점:**
1. 변수명과 값을 자동으로 함께 출력해 가독성 향상
2. 복잡한 표현식도 명확하게 표시
3. 라인 번호와 함수명 표시 옵션으로 추적 용이
4. 컬러 출력으로 가독성 향상

**단점:**
1. 외부 패키지로 설치 필요 (`pip install icecream`)
2. 모든 프로젝트에서 표준으로 사용되지 않아 협업 시 설명 필요

**예시:**
```python
from icecream import ic

# 기본 사용법
name = "홍길동"
age = 30
ic(name, age)  # ic| name: '홍길동', age: 30

# 복잡한 표현식 디버깅
numbers = [1, 2, 3, 4, 5]
ic(numbers, sum(numbers), len(numbers))  
# ic| numbers: [1, 2, 3, 4, 5], sum(numbers): 15, len(numbers): 5

# 조건문 내부에서 사용
for i in range(3):
    if i % 2 == 0:
        ic(i, "짝수")  # 변수명과 값을 함께 표시
```

## 실무 활용 비교

**print() 적합한 상황:**
- 간단한 로그 출력
- 사용자에게 보여줄 출력물 생성
- 외부 라이브러리 설치가 제한된 환경

**ic() 적합한 상황:**
- 복잡한 디버깅 시나리오
- 여러 변수를 동시에 추적할 때
- 코드 흐름을 명확하게 확인하고 싶을 때

print()는 가장 기본적인 도구로 어디서나 사용 가능하지만, ic()는 디버깅에 특화된 기능을 제공해 개발 효율성을 크게 높여줍니다.

반응형