본문 바로가기

데이터 다루기/Python

[Python] 에러 및 디버깅

728x90
반응형

파이썬에서는 코드에 문제가 있는 경우 에러를 출력합니다.

해당 에러에 대해 탐색하는 과정을 디버깅이라고 말합니다.

한 번 에러가 나는 코드를 만들어 보겠습니다.

 

def division(a,b):
    return a / b

def custom_function(x):
    return division(x, x-1)

division은 a와 b를 인자로 받아서, a에서 b를 나눈 값을 반환합니다.
custom_function은 x를 인자로 받아서, x에서 x-1을 나눈 값을 반환합니다.

만약 여기서 x = 1 을 대입하게 된다면 어떻게 될까요?
수학적으로 분모는 0이 되면 안되기 때문에, 아마 오류가 나야 할 것입니다.

 

custom_function(1)


---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Cell In[10], line 1
----> 1 custom_function(1)

Cell In[9], line 5, in custom_function(x=1)
      4 def custom_function(x):
----> 5     return division(x, x-1)
        x = 1
        x-1 = 0

Cell In[9], line 2, in division(a=1, b=0)
      1 def division(a,b):
----> 2     return a / b
        a = 1
        b = 0

ZeroDivisionError: division by zero

Python에서 실행한 결과 ZeroDivisionError가 발생합니다.
에러 문구의 상세한 정도를 %xmode로 조절할 수 있습니다.
Plain은 더 간결한 에러 문구 출력을, Verbose는 더 상세한 에러 문구 출력을 반환합니다.

 

%xmode Plain
custom_function(1)



Traceback (most recent call last):

  Cell In[3], line 3
    custom_function(1)

  Cell In[1], line 5 in custom_function
    return division(x, x-1)

  Cell In[1], line 2 in division
    return a / b

ZeroDivisionError: division by zero
%xmode Verbose
custom_function(1)



---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Cell In[4], line 3
      1 get_ipython().run_line_magic('xmode', 'Verbose')
----> 3 custom_function(1)

Cell In[1], line 5, in custom_function(x=1)
      4 def custom_function(x):
----> 5     return division(x, x-1)
        x = 1
        x-1 = 0

Cell In[1], line 2, in division(a=1, b=0)
      1 def division(a,b):
----> 2     return a / b
        a = 1
        b = 0

ZeroDivisionError: division by zero

 

또한 %debug 명령어를 사용하면 Debugging을 실행시킬 수 있습니다.

 

%debug
custom_function(1)
반응형

'데이터 다루기 > Python' 카테고리의 다른 글

[Python] Array 만들기  (0) 2023.03.16
[Python] Numpy란?  (0) 2023.03.15
[Python] 코드 실행 시간 측정  (0) 2023.02.15
[Python] 기초 문법 (9) List 관련 함수  (0) 2020.11.06
[Python] 기초 문법 (8) File processing  (0) 2020.11.06