3. 패키지
■ 패키지
- 파이썬 패키지는 디렉토리와 파이썬 모듈로 이루어진 구조이다.
- .(dot)을 이용해서 계층적으로 접근 관리가 가능하다.
■ __init__.py
- 해당 디렉토리가 패키지의 일부임을 알려주는 역할을 한다.
※ python3.3 버전부터는 __init__.py 파일이 없어도 패키지로 인식한다(PEP 420). 하지만 하위 버전 호환을 위해 __init__.py 파일을 생성하는 것이 안전한 방법이다.
- __all__ 변수
• 패키지 import 시에 *를 사용해 import 할 모듈들을 정의하는 변수
• __all__ 변수에 정의되어 있지 않은 모듈은 *를 통해서 해당 패키지를 import 해도 사용할 수 없다.
※ from a.b.c import * 에서 패키지의 마지막인 c가 모듈인 경우에는 __all__에 정의되어 있지 않아도 c 모듈을 사용할 수 있다.
■ relative 패키지
- 패키지 import 시에 상대적 ₩주소를 통해서도 불러오기 가능하다.
# .. 부모 디렉토리, . 현재 디렉토리
from ..sound.echo import echo_test
def test_func():
echo_test()
※ 파이썬 인터프리터에서 상대주소를 사용하는 경우 에러 발생한다.
4. 예외처리
■ 오류 발생 상황 예제
- FileNotFoundError: 존재하지 않는 파일 오픈시 발생
- ZeroDivisionError: 0으로 다른 숫자를 나누는 경우 발생
- Index Error: 리스트 등의 범위를 벗어난 인덱스에 접근하는 경우 발생
■ 오류 예외 처리 기법
- try, except 문
• try 문 실행 중 오류 발생시 except문 실행
# try - except 기본구조
try:
...
except [발생 오류[as 오류 메시지 변수]]:
...
- try, finally 문
• finally: 예외상황 발생 여부에 상관없이 실행되는 구문이다. 보통 리소스 close()시에 사용한다.
- 여러개의 예외 처리
• 각각의 발생 오류에 따라 서로 다른 예외문을 실행한다.
• else문 사용 가능
try:
...
except 발생 오류1:
...
except 발생 오류2:
...
except (발생 오류3, 발생 오류4):
...
else:
...
■ 오류 회피하기
- pass를 이용해서 오류 회피하도록 한다.
# 오류 발생에도 pass를 통해서 오류를 통과하도록 한다.
try:
f = open("나없는파일", 'r')
except FileNotFoundError:
pass
■ 오류 발생시키기
- raise를 통해 오류를 강제로 발생시킨다.
■ 예외 만들기
- python 내장 클래스 Exception을 이용해서 예외 생성이 가능하다.
- 예외 메세지, __str__
• __str__로 반환되어지는 메세지가 예외 메세지로 출력되게 된다.
# 에러 생성
class MyError(Exception):
def __str__(self):
return "허용되지 않는 별명입니다."
def say_nick(nick):
if nick == '바보':
# 에러 발생
raise MyError()
print(nick)
try:
say_nick("천사") # 정상 수행
say_nick("바보") # MyError 에러 발생
except MyError as e:
print("허용되지 않는 별명입니다.")
print(e)
'''
[출력]
천사
허용되지 않는 별명입니다.
허용되지 않는 별명입니다.
'''
'프로그래밍언어 > Python' 카테고리의 다른 글
[Python] 정규 표현식 (Regular Expressions) (0) | 2021.03.08 |
---|---|
ch05. 파이썬 날개달기 (내장함수, 라이브러리) (0) | 2021.03.06 |
ch05. 파이썬 날개달기 (모듈) (0) | 2021.02.28 |
ch05. 파이썬 날개달기 (클래스) (0) | 2021.02.22 |
ch04. 파이썬 프로그래밍 프로그램 입출력 (파일 읽고 쓰기) (0) | 2021.02.21 |