TypeError
•
파이썬 코드를 작성하다 보면 가장 흔히 만나게 되는 에러
•
데이터 타입과 관련된 에러
•
잘못된 데이터의 유형이 연산이나 함수에 적용될 때 발생
•
TypeError에 뒤이어 나오는 내용은 어떤 유형이 불일치하는지에 대한 세부 정보를 제공
예제
1.
TypeError: 'int' object is not subscriptable
•
정수형을 인덱싱 할 수 없다는 의미. 리스트나 문자열이 아닌 정수형을 인덱싱하려고 할 때 발생
2.
TypeError: 'float' object cannot be interpreted as an integer
•
'float' 는 정수로 인식될 수 없다는 의미. 꼭 정수형을 넘겨줘야되는 파라미터에 실수형을 넘겨주면 발생
•
주로 range 함수 내에 정수형(int)이 아닌 실수형(float)를 입력하면 만나게 되는 에러
3.
TypeError: list indices must be integers or slices, not str
•
리스트의 인덱스는 문자형이 아니라 정수형이나 슬라이스(범위)여야 한다는 의미
•
파이썬의 리스트를 인덱싱할 때 정수가 아닌 문자열로 인덱싱할 때 발생
SyntaxError
•
프로그램 구문이 잘못 쓰였을 경우 발생하는 에러
•
주로 철자가 정확하지 않거나 따옴표, 괄호, 콜론 등을 빠뜨렸을 때 발생
예제
1.
SyntaxError: invalid syntax
•
파이썬에서 쓰지 않는 문법이라는 의미. 문법적인 에러가 있을 때 발생
2.
SyntaxError: EOL while scanning string literal
•
문자열을 스캔하던 도중 ‘라인이 끝나버렸다(EOL=End of Line)’는 의미. 따옴표가 누락되었을 경우 발생.
IndexError
•
리스트의 범위를 벗어난 인덱스에 접근하려 하는 경우 발생하는 에러
•
해당 에러를 만났을 때는 리스트의 사이즈 얼마인지, 접근하려고 한 인덱스가 리스트의 사이즈보다 크지 않은지 확인해보면 좋다.
예제
•
IndexError: list index out of range
◦
리스트의 인덱스가 범위를 벗어났다는 의미
NameError
•
사용하려는 로컬 또는 글로벌 변수의 이름을 찾을 수 없을 때 발생하는 에러
•
NameError에 뒤이어 나오는 내용은 찾을 수 없는 이름이 무엇인지 알려준다.
•
해당 에러를 만났을 때는 변수의 이름이 제대로 지정되었는지 확인해야 한다.
•
주로 들여쓰기를 제대로 하지 않아서 발생하는 경우가 많다.
예제
•
NameError: name 'honey' is not defined
◦
‘honey’이라는 이름의 변수가 정의되지 않았다는 의미
◦
변수가 제대로 선언되었는지 확인 필요
AttributeError
•
속성 참조 또는 할당이 실패하면 발생하는 에러
•
NameError 와 유사하게 속성의 이름을 잘못 썼을 때 발생하는 경우가 많다.
예제
•
AttributeError: module '' has no attribute ''
◦
Import한 모듈의 명령어를 잘못 입력했다는 의미
◦
모듈의 속성 이름이 잘못되지 않았는지 확인
ValueError
•
함수가 받은 파라미터가 올바른 자료형이나, 부적절한 값일 때 발생
예제
1.
ValueError: min() arg is an empty sequenceValueError: max() arg is an empty sequence
•
min() 함수나 max()함수의 인자로 빈 리스트를 제공해줬다는 의미.
2.
ValueError: invalid literal for int() with
•
정수, 소수, 문자열 등 다른 자료형 사이에서 값을 변환할 때 변환이 불가능하면 발생.
•
예를 들어, a = int(“codeit”)와 같은 문장은 문자열 codeit을 정수로 변환할 수 없으므로 에러가 발생.
ImportError
•
Import 문에서 모듈을 로드하는 과정에서 문제가 있을 때 발생하는 에러
•
주로 파일명이 모듈명과 동일하여 발생하는 경우가 많다.
예제
•
ImportError: attempted relative import with no known parent package
◦
상위 패키지의 위치를 알 수 없다는 의미.
ModulenotfoundError
•
ImportError의 하위 클래스로 모듈을 찾을 수 없을 때 발생하는 에러
•
실전 프로젝트를 진행할 때 종종 만나게 되는 에러
예제
•
ModuleNotFoundError: No module named 'module_name'
◦
‘module_name’이라는 모듈을 찾을 수 없다는 의미.