"에러 메시지를 잘 읽을 줄 아는 것이 디버깅하는 지름길" 이라더라
def greeting(your_name):
print("Hello, " + yourname + "!")
greeting("Donald Trump")
>실행결과
>해석
Traceback : 코드의 아래에서부터 읽어라
(most recent call last) : 가장 최근의 call이 가장 마지막으로! 즉, 코드 순이 A-> B -> C 순이면 'C부터 읽어라'
File "main.py", line 4, in <module>
greeting("Donald Trump")
바로 아래 오는 이 두 줄은 "에러가 발생한 길" 이다
<modul> 에서 발생했다는 것은 '어떤 함수에도 속하지 않은 가장 외부에서 불려진 코드'이다.
File "main.py", line 2, in greeting
print("Hello", yourname + "!")
다음에 오는 두 줄은 "결정적이게 에러를 발생시킨 부분" 이다.
NameError: name 'yourname' is not defined
Error의 종류와 상세한 설명이다. 여기서 변수명'yourname'이 정의되지 않았다는 것을 뜻한다. 함수 greeting에서 input parameter로 your_name를 취하는데, output에선 yourname을 사용하려하니 errorr가 발생된 것이다!
이외 자주 접하는 Error Code
1. Syntax error
def add_all(numbers):
result = 0
for number in numbers
result += number
return result
File "main.py", line 3
for number in numbers
SyntaxError: invalid syntax
"컴퓨터가 이해할 수 없는 코드" 즉, 문법오류 이다!
애초에 문법자체가 틀렸으므로 , Traceback 또한 없다.
2. NameError
위의 예에서 살펴본, "정의하기 전에 사용된 변수명" 때문에 발생한 에러이다.
보통 NameError가 뜬다면 오탈자를 확인하는 것이 좋다!
3. TypeError
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
와 같은 예가 있는데, 이는 '문자열 변수와 숫자형 변수를 더하려고 했기 때문'에 발생한 에러이다.
문자와 숫자는 더할 수 없다.
보통 TypeError는
1. 문자열 변수와 정수형 변수를 연산하려고 하는 경우
2. 함수등의 parameter로 정수를 받아야하는데 문자열을 넣어준 경우
에 발생하는 경우가 많다.
4. IndexError
IndexError: string index out of range
"문자열의 해당 인덱스 글자가 존재하지 않으니" 에러발생
예를 들어
string = "dictionary"
"dictionary" 는 10글자이기에 index는 0에서 9까지만 존재한다
이때 string[10]로 11번째 글자를 call 하면 IndexError가 발생한다.
5. Zero division error
분모에 들어가는 변수가 0의 값을 가지기에 "0으로 나눈 에러" 가 발생한 것이다!
예로,
return sum(numbers)/len(numbers)
와 같은 함수를 짰는데,
numbers에 원소가 존재하지 않을때 zero division error가 발생할 것이다
6. ImportError
import 한 함수를 찾을 수 없을때 발생한다.
7. Recursion Error
재귀함수를 사용할 때 발생하는데,
재귀함수가 1회 실행될때 depth가 1회 추가되는데,
보통 재귀함수의 최대깊이인 1000회보다 더 깊게끔 함수가 실행될 때 발생한다.
'Programming > 공부' 카테고리의 다른 글
intelliJ IDEA 자동완성 꿀팁 (feat.Constructor) (0) | 2022.03.18 |
---|---|
Python Class 정리! (0) | 2021.12.20 |
Python 문자열 올바른 양식인지 확인하기(feat.이메일 양식) (0) | 2021.12.20 |
문자열에 특수기호, 숫자 포함하는지 확인하기 (feat. string) (0) | 2021.12.20 |