프로그래밍/파이썬🐍

(8)점프투파이썬_[5-2모듈 : 5-4예외처리]

개발자 덕구🐾 2022. 1. 9. 07:39
728x90

모듈 : 함수나 변수 또는 클래스들을 모아 놓은 파일

 

간단한 함수를 만든다.

 

cmd에서 해당 파일의 위치로 cd 한다. 

 

[인터프리터 사용]

 

이런식으로 모듈을 이용할 수 있다. 

import 모듈이름

또는 

from 모듈이름 import 모듈함수

(함수를 호출할 때 모듈이름 안적어도 된다)

해당 모듈에서 불러오고 싶은 모듈함수가 여러개일 때 

'*' 문자를 이용한다. 

 

 

모듈을 import할 때 해당 모듈에 있는 print()가 그냥 출력된다.

이 때는 print()전에 if __name__ == "__main__" : 를 추가하면 된다. 

 

__name__ == "__main__" 이 거짓이 되므로 print()가 실행되지않는 것이다. 

 

 

이런식으로 이용할 수 있다. 

 

동일한 directory에 있어야만 실행가능하다.

 

 

5-3 패키지

패키지는 도트(.)를 이용해 파이썬 모듈을 계층적으로 관리할 수 있게 해준다. 

 

A.B -> A : 패키지명 , B : A패키지의 모듈 

 

 

이와 같은 구성의 패키지를 만든다. 

 

game 패키지를 참조하기위해 경로를 PYTHONPATH 환경변수에 추가한다. 

 

 

echo.py의 함수 echo_test를 실행시키는 방법은 3가지가 있다. 

 

1) 

 

2) 

 

3) 

 

할 때마다 ctrl + z를 이용해 인터프리터를 종료하고 다시 실행해야한다.

import한것들이 남아 에러가 발생 할 수 있기 때문이다. 

 

import 할때 마지막 

즉 import a.b.c에서 c는 모듈 또는 패키지여야한다.

 

__init__.py 의 용도

해당 디렉토리가 패키지의 일부임을 알려주는 역할을 한다. 

 

 

__all__ 의 용도

모듈을 '*'를 이용해 import할 때 __init__.py 파일에 __all__이라는 변수를 만들고

import할 수있는 모듈을 정의해주어야한다.

 

 sound 디렉토리에서 *를 이용해 import 할 때 sound안에 있는 echo 모듈만 import 된다는 의미이다. 

 

 

5-4 예외처리

오류 예외 처리 기법

 

try :

....

except [발생 오류[as 오류 메세지 변수]] :

...

 

try 블록 실행 중에 오류가 발생하면 except 블록이 수행된다. 

오류가 발생하지않는다면 except 블록은 수행되지 않는다.

 

 

'[]' 는 괄호 속 내용을 생략 할 수 있다는 관례적 표현이다.

 

try문은 else 절을 지원하는데 예외가 발생하지 않을 때 실행된다. 

 

try문은 finally 절을 지원하는데 예외 발생 여부에 관계없이 항상 수행된다. 

 

 

오류를 일부러 발생시키기

 

자식클래스에서 반드시 fly라는 함수를 구현하도록 만들고 싶은 경우 raise를 이용해 오류를 발생시킨다. 

 

class bird() :
    def fly(self):
        raise NotImplemented

class eagle(bird):
    pass

a = eagle()
a.fly()

 

 

이와 같은 에러가 발생한다. 

 

메서드 오버라이딩!

class bird() :
    def fly(self):
        raise NotImplemented

class eagle(bird):
    def fly(self) :
        print('very fast')

a = eagle()
a.fly()

 

 

반응형