-
220715_부트캠프시작_python_2주_5일차 (복기)bigdata_bootcamp_12th/daily review 2022. 7. 17. 20:13
1. 예외처리 try, except, else, finally
1) 예외(exception)란?
- 일반적으로 오류 혹은 에러 라고 불리웁니다.
- 프로그램 실행 중에 예외가 발생하면 '비정상종료'가 되는데요
- 비정상 종료를 막기 위해서 에러(예외)가 발생된 이후의 문장은 정상적으로 수행하도록 처리하는 방법을 우리는 예외처리 라고 부릅니다.
- 쉽게 예외처리는 if 오류가 났을 시 정도로 사용하면 될 것 같다.
2) try, except, else, finally
try:
예외가 발생할 가능성이 있는 코드
except:
예외가 발생할 때 실행할 코드
except:
예외가 발생할 때 실행할 코드
except:
예외가 발생할 때 실행할 코드
else:
잘 실행되면 실행할 코드
finally:
되든 안되든 반드시 실행할 코드사용 예시 ( try, except )
try: # 오류가 없으면 아래 블럭 내용을 실행해줘 strs = int(input('문자열을 입력하세요')) print(strs) except Exception as e: # 오류가 있으면 해당오류는 e라고 부를게 오류와 내용을 출력해줘 print(e, '정수로 변환할 수 없는 문자열을 입력하셨습니다.')
except Exception 은 런타임 오류의 가장 큰 카테고리라고 생각하면 된다.
다른 오류를 지정하지 않아도 런타임오류가 난다면 Exception 선에서 정리가 된다.
try: # 오류가 있니? def convert(a): try: return int(a) # except Exception: 대 카테고리인 Exception이 먼저 나오면 조건 충족으로 # return 'Exception' 다른 에러들에 대한 각각 리턴값을 받지 않음 단락평과와 유사한 듯 except TypeError: return 'TypeError' except NameError: return 'NameError' except ValueError: return 'ValueError' except Exception: return 'Exception' # convert(가) convert() except Exception as e: print(e, '뭔가 오류가 남') # pass - 다음 대응은 모르겠고 일단 돌아가게는 만들고 싶은 경우 # TypeError: convert() missing 1 required positional argument: 'a' - try /except 안에서 뭔가 처리해줬기 때문에 오류 안 감 # TypeError: convert() takes 1 positional argument but 2 were given # NameError: name '가' is not defined
3)
try: # 할 수 있는 처리는 이 안에서 if-else로 하고 num1 = int(input('첫번째 숫자')) num2 = int(input('두번째 숫자')) sum = 0 if (num1 <= num2): for i in range(num1, num2+1): sum = sum+i else: for i in range(num2, num1+1): sum = sum+i print(f'{num1}과 {num2} 사이 합은 {sum} 입니다.') except Exception as e: # 어쩔 수 없는 경우들을 처리할 때 씁니다 print('에러발생',type(e), e) # 어떻게든 돌아가게 하기 위해 # pass else: # 예외가 발생되지 않은 경우 실행문 print('else') finally: # 예외 유무와 상관없이 마지막에 항상 실행 print('finally') # f.close() - 어딘가와 연결되어서 쓰던 것을 종료할 때
else는 try 에서 조건 충족 시 나온다 보면된다.
finally는 무조건 나온다. 파일을 종료할 때 많이 사용 된다고 한다.
2. 클래스
1) 클래스
- 사용자가 정의하는 새로운 타입
- int, bool, str, float, list, tuple, range .... -> 파이썬에서 미리 만들어둔 클래스
- 이렇게 파이썬이 자체 제공하는 클래스(사람들이 자주 사용하는 클래스) 외에도사용자가 직접 타입 지정 가능 = 사용자 직접 제작 사용
- 파이썬은 클래스가 아닌 게 없습니다- 함수도 클래스로 정의되어 있습니다.
class ClassName:
클래스 블록
- 클래스 외에 모든 변수, 함수명은 snake_case를 권장합니다.
- 클래스는 첫 글자부터 대문자로 시작해서 띄어쓰기 대신 대문자를 사용하는 CamelCase를 권장합니다.
- 안 해도 동작은 하지만 약속입니다.
- 클래스는 함수, 변수를 담는 존재기 때문에 크게 간다
- int, float, list 왜 소문자냐면 잘 알려져 있는 파이썬의 기본 클래스이기 때문에 그냥 소문자로 표현합니다.2) 객체, 인스턴스
폼은 일시적이지만 클래스는 영원하다.
스포츠를 좋아하시는 분들은 대부분 아는 용어입니다.
절대적으로 값이 변하지 않는 다른 인스턴스와 객체들의 출신을 나타낼 수 있는 값이 클래스라고 생각합니다.
나는 김민식의 아들 김망고 입니다. ( 김민식 = 클래스, 김망고 = 김민식의 인스턴스 )
나는 김망고입니다. ( 김망고 = 객체 )
출신을 나타내는 클래스와 함께 불릴 때는 객체에서 클래스의 인스턴스로 불린다.3) 클래스와 인스턴스(객체) 설정방식
class Kim_Minsik: # 생성자 - Kim_Minsik 의 출신을 가지고 찍어냅니다. name = '' # 기본값은 앞으로 들어갈 데이터의 type과 일치하게 만들어줍니다. gender = '' fav = {'key':'value'}
김망고 = Kim_Minsik() 김망고.name = '김망고' 김망고.gender = 'M'
'bigdata_bootcamp_12th > daily review' 카테고리의 다른 글
220719_데이터분석_NumPy_3주_2일차(복기) (0) 2022.07.19 220718_부트캠프시작_python_3주_1일차 (복기) (0) 2022.07.18 220714_부트캠프시작_python_2주_4일차 (복기) (0) 2022.07.14 220713_부트캠프시작_python_2주_3일차 (복기) (0) 2022.07.13 220712_부트캠프시작_python_2주_2일차 (복기) (0) 2022.07.12