예외처리
-> 오류가 발생했을 때 어떻게 할지를 정하는 것이다.
원래는 오류가 발생하면 무조건 프로그램이 꺼진다. 그런데 오류가 발생해도 그 오류를 어떻게 처리해서 넘어가게끔 만들 수도 있다. 그게 예외처리.
기본 구조는 다음과 같다.
+ 예제
try 안쪽에 있는 에러가 발생하면 except에서 에러 내용을 처리해라. 그 내용이 e에 담겨서 print 된다.
그냥 에러가 났을 때는 프로그램이 멈추면서 에러를 뿌렸는데
이렇게 하면 에러가 나도 에러를 처리하고 아래에 또 다른 코드가 있으면 그걸 그대로 실행해준다.
try .. else
파일을 open했는데 파일이 없으면 FileNotFoundError를 출력.
else는 try 안쪽이 구문의 오류가 없을 때 실행된다.
만약, 파일 open이 성공했으면 read하고 print하고 close가 실행되는 것이다.
try .. finally
finally는 오류가 나든 안나든 무조건 마지막에 실행되는 구문이다.
보통 이걸 언제 사용하냐면
파일을 오픈하고나서는 파일을 무조건 닫아줘야 한다.
open을 먼저 첫줄에 해줬으니까 오류가 나건 출력을 하건 상관없이 무조건 close를 해주는 것이다.
아까처럼 FileNotFoundError가 아니라 여기서 오류를 Exception이라고 잡는 이유는
구체적으로 오류가 뭐가 발생할지 모르겠어. 이럴때 Exceptioin이라고 써준다.
Exception은 모든 오류의 부모이다. (클래스임)
즉, Exception으로 하면 어떤 에러든 잡을 수 있다.
여러 개 오류 처리하기
여러개의 except를 사용해서 오류 별로 다르게 처리가 가능하다.
오류 회피하기
오류가 발생했을 때 그냥 지나가라
출력 결과, 아무것도 출력되지 않음.
오류 일부러 발생시키기
raise 뒤에 오류 이름을 적게 되면 이걸 실행했을 때 오류가 발생한다.
Bird가 부모클래스고 Eagle이 자식클래스인데 자식클래스가 부모를 상속받아서 동작하면
자식 이기는 부모 없다. 자식이 이기기 때문에 동작한다. 그래서 오류 없이 very fast라고 출력된다.
왜 이걸 사용하는가?
프로그래머 입장에서 나는 부모 클래스로 Bird라는 걸 만들고 싶어. 근데 이거의 자식들은 fly가 있으면 좋겠는데
fly를 무조건 변형해서 만들고 싶어. 그럴 때 이걸 사용한다. fly를 변형을 안해서 쓰면 에러가 나니까 fly를 변형해서 쓰라고 강제를 하는 것이다.
즉, 프로그래머 입장에서 Bird를 쓰는데 이걸 변형해서 쓰라고 강제를 하고 싶을 때 raise로 에러를 쓰게 된다.
내장함수
파이썬에서 기본적으로 포함하고 있는 함수.
ex) print(), type()
- abs() : 절대값을 나타내는 함수
- all() : 모두 참인지 검사
- any() : 하나라도 참이 있는지 검사
- chr() : ASCII 코드를 입력받아 문자 출력
(아스키 코드 = 0~127 사이의 숫자를 각 문자에 대응)
- dir() : 자체적으로 가지고 있는 변수나 함수를 보여줌
이 예제는 리스트에서 쓸 수 있는 명령어의 모음을 볼 수 있다.
- divmod() : 몫과 나머지를 튜플 형태로 돌려줌
- enumerate() : 열거하다
리스트가 있으면 그걸 마치 딕셔너리처럼 빼서 쓸 수 있다.
- eval() : 실행 후 결과값을 돌려줌
- filter() : 함수를 통과하여 참인 것만 돌려줌
- id() : 주소 값
- input() : 사용자 입력 받는 함수
- int() : 10진수 정수 형태로 변환, 문자열이나 소수를 정수로 변환
- len() : 길이
- list() : 리스트로 변환
- map() : 각 요소가 수행한 결과를 돌려줌
- max() : 최대 값
- min() : 최소 값
- open() : 파일 열기
w : 쓰기모드로 파일 열기
r : 읽기모드로 파일 열기
a : 추가모드로 파일 열기
b : 바이너리 모드로 파일 열기
- pow() : 제곱한 결과값 반환
- range() : 범위
- round() : 반올림
- sorted() : 정렬
- str() : 문자열 반환
- tuple() : 튜플 반환
- type() : 타입을 출력
- zip() : 자료형을 묶어주는 역할
외장함수
라이브러리 함수, import해서 쓰는 것.
파이썬 내부에 정의되어 있지 않고 다른데 정의되어 있는 함수.
(둘 다 가져다 쓰는 애들임.)
- sys.argv
- pickle() : 파일 형태로 저장가능. 딕셔너리 같은 거는 파이썬에만 있는 데이터이다. 그걸 pickle을 통해서 dump라는
명령어로 저장하게 되면 이걸 언제든 다시 딕셔너리 형태로 꺼내와서 그걸 사용할 수 있다.
- time() : 날짜 및 시간 출력.
- time.sleep() : 이 예제 같은 경우, 1초 쉬어라
- random() : 랜덤 수 생성
- webbrowser() : 웹 브라우저가 켜짐.
'Python > Python Study' 카테고리의 다른 글
파이썬 프로그램 - 2 (1) | 2021.01.15 |
---|---|
파이썬 프로그램 - 1 (0) | 2021.01.14 |
파이썬 추가적인 개념 - 1 (0) | 2021.01.09 |
파이썬 입출력 (0) | 2021.01.09 |
파이썬 제어문 (0) | 2020.12.28 |