ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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'

     

     

     

     

Designed by Tistory.