본문 바로가기
DEVLOG/Python

아직도 파이썬 디버깅할때 print 또는 log 쓰세요?

2021. 4. 3.
반응형

이제 파이썬 디버깅 Icecream 쓰세요

 

 

여러분의 코드를 디버깅할 때 print를 쓴다면

터미널에서 너무 많은 출력값으로 인해

혼란스럽고 이 출력값이 어떤 코드에 해당하는

출력값인지 확인하기 번거롭습니다

 

num1 = 30
num2 = 40

print(num1)
print(num2)

 

이 코드는 아래와 같이 출력할거에요

 

30
40

 

당연히 첫번째가 num1값이고

두번째가 num2값이라는 것을

알아챌 수 있습니다

 

하지만 출력값이 너무 많다면?

이렇게 사용할 수도 있겠네요

 

num1 = 30
num2 = 40

print('num1', num1)
print('num2', num2)
num1 30
num2 40

 

확실히 이전 코드보다는 어떤 변수의

출력값인지 알아보기 쉬워졌습니다

 

 

 

하지만 저렇게 텍스트를 입력하는것은

시간낭비입니다

 

아래와 같이 작성하면 어떨까요?

 

num1 = 30
num2 = 40

ic(num1)
ic(num2)
ic| num1: 30
ic| num2: 40

 

icecream이 뭔가요?

icecream은 디버깅할때 미니멀한 코드로

가독성을 높여주는 파이썬 라이브러리입니다

 

아이스크림을 사용하기 위해서는

먼저 설치를 해주셔야합니다

 

$ pip install icecream

 

간단한 함수를 만들어

결과값을 출력해보겠습니다

 

from icecream import ic

def plus_five(num):
    return num + 5
    
ic(plus_five(4))
ic(plus_five(5))

 

ic를 사용하면 단순히 출력만 보는게 아니라

함수와 변수값도 한 눈에 볼 수 있어요

 

정말 편리하지 않나요?

 

또 다른 예시도 한번 보시죠

 

def hello(user:bool):
    if user:
        print("I'm user")
    else:
        print("I'm not user")

hello(user=True)

 

Icecream은 추가적인 텍스트 없이

간편하게 디버깅할 수 있습니다

 

from icecream import ic

def hello(user:bool):
    if user:
        ic()
    else:
        ic()

hello(user=True)

 

출력값을 보면 5번째 줄에서 실행됐고

7번째 줄은 실행되지 않은 것을

확인할 수 있습니다

 

from datetime import datetime
from icecream import ic
import time

def time_format():
    return f'{datetime.now()}|> '
    
ic.configureOutput(prefix=time_format)

for _ in range(3):
    time.sleep(1)
    ic('Hello')

 

위와 같이 time_format을 prefix로 설정해주면

다음과 같이 실행시간을 측정할 수 있습니다

 

 

반응형

댓글