OO하는 데이터분석가

[DSschool]파이썬에서 오류메세지 '잘' 읽는 법

흔흔 2020. 11. 15. 20:12

요즘 DS school(디에스 스쿨) 데이터사이언스 입문 과정을 듣고 있다. 실무에서 파이썬을 야금야금 보고있기는 한데 당장 사용해야하는 것들 위주로 그때그때 보다보니 정리가 잘 안되는 기분이다. 그래서 해당강의의 복습겸 하나하나씩 기록을 남겨보려고 한다. 오류 발생 시 이런 순서로 실행하면 된다. 인건데 코딩에 발 담그고 있는 사람이라면 기본적으로 다 이렇게 하고 있을것같긴하다.

 

2강 - 23개 강의중 17번째 강의 내용

 

아래와 같이 오류가 나오는 상황은 가정해 본다. a라는 변수에는 2가 string으로 들어가 있다. 이를 숫자 1과 더해준다면? 아래와 같이 오류가 발생하게 된다.

a = "2"
1+a

 


해당 에러는 결과물이나 연산자체가 잘못되어서 생기는 에러는 아니다.

3으로도 실행할 수 있고, 12로도 실행할 수 있지만 실행이 안되는 이유는 보는사람에 따라 3으로, 12로도 이해할 수 있기때문에 명시성이 떨어지기 때문이다. 코드에서 보통 이런건 실행하지 않고, 에러메세지를 띄워줌으로써 100명이 해당 코드를 봤을 때, 100명이 같은 결론을 낼 수 있는 형태로 바꿔주는 것이다.

 

<<에러 메세지 전문>>

TypeError Traceback (most recent call last)

<ipython-input-19-f583876e65b5> in <module>()

8

a = "2"

---> 10 1+a

11

12

TypeError: unsupported operand type(s) for +: 'int' and 'str'

 

오류 메세지 읽는 순서

그렇다면 이렇게 코드가 발생했을 때 어떤 순서로 에러를 추척 해 수정해주면 될까?

1. 제일 아랫줄 에러 메세지를 확인하자.

 >에러 메세지 내용 자체를 설명 해준다. 위 경우 다른 operand type인 int 와 str을 연산하는 것이 불가능 하다고 설명한다. 해당 메세지를 읽었을때 어려움 없이 이해가된다.

2. 화살표가 표시된 줄에 에러가 있으니까 여기를 보고 집중적으로 고쳐라.

 >아래 오류 메세지에서 실제로 둘을 더하는 과정에서 문제가 발생했으므로, +연산이 시작되는 줄에 화살표가 표시되어 있음을 알 수 있다.

3. 화살표가 표시된 줄에 문제가 없으면 그 코드랑 간접적인 다른 코드를 봐라.

 > 1+a 라는 코드 자체를 보면 문제는 없어보인다. 그렇지만 윗줄에서 a라는 변수에 문자열을 넣어주었기 때문에 타입에러가 일어난 것이다.

4. 화살표에 문제가 없다면? 위로 3줄 정도안에 소괄호,중괄호,대괄호 혹은 작은따옴표,쌍따옴표 잘 찍었는지 확인하라.

 >모든 괄호와 따옴표들은 쌍으로 움직이고, 이는 실수하기 쉬운 부분이기도 하다. 그리고 이런 이유는 파이썬에서 괄호를 제대로 닫지 않은 라인이 아니라 한줄 띄어넘은 곳을 화살표로 지정해 알려준다고 한다. 어쩔 수 없는 부분이라고...

 

이렇게 하면 생성되는 오류의 90%는 다 해결할 수 있다고 한다.(정말요...?) 마지만 10%는..

 

오류메세지를  전체선택+복사를 해서 구글에 검색, stack overflow에 찾아보거나 물어보자.

만약 검색결과에서도 찾을 수 없다면 나의 Os버전이나 파이썬버전 파이썬패키지명을 검색키워드로 추가해서 찾아라.

 

역시 코드는 구글이 한다는 말이 틀리지는 않은가보다ㅋㅋㅋ강의 들으면서도 역시 그렇구나~ 했다. ㅋㅋㅋㅋ 예전? 90년대만 해도 검색해서 찾고 코딩하는 개발자들을 몽키코더라고 비하아닌 비하를 했었다고 한다. 지금은 찾아서 해결하는것도 좋은 프로그래머의 소양이다 라고 생각해주는 추세라고 ㅋㅋㅋ  참 다행인 일이다. 단 검색 시 네이버는 잘안나오므로 좀 불편해도 구글에서 찾아보라고 한다.

 

해당 강의를 들으면서 선생님이 하신 말씀을 받아 적는 것이라 선생님의 의견이 많이 포함 될 것 같다. 나의 견해는 아니라는 것을 잘 알아주길!

반응형