우수 혼공단 선정 너무 기뻐요!! ❤️
벌써 혼공단 활동도 절반을 넘어서 끝이 다가오네요... 시간이 너무 빨리 흐르는 것 같습니당 ㅎㅎ
이번 주도 열심히 공부 해 보겠습니다! 파이썬 공부 너무 재밌어요 👻😎
Chapter 06. 예외 처리
[구문 오류와 예외]
✏️ 구문 오류 (syntax error) : 프로그램이 실행되기 전에 발생하는 오류
- 괄호나 따옴표 개수, 들여쓰기 등의 문제가 있을 때 발생
- 해결하지 않으면 프로그램 자체가 실행되지 않으므로, 오류가 발생한 코드를 찾아 수정해야 한다.
# 정상적인 실행 print("Hello World") # 구문 오류 발생 - 닫는 따옴표가 없음 # 닫는 따옴표 추가해서 해결 print("Hello World) |
✏️ 예외 (exception) 또는 런타임 오류 (runtime error) : 프로그램 실행 중에 발생하는 오류이며, 구문 오류 해결법처럼 오류가 발생한 코드를 찾아 수정해야 한다.
✏️예외 처리 (exception handling) : 예외를 처리하는 모든 것
✔️ 구문 오류는 프로그램 실행 전에 발생하기 때문에 예외처리 방법으로 처리할 수 없다.
★ 조건문으로 예외 처리하기
✔️ 정수를 입력받는 소스 코드에 문자열을 입력한다면 ? 예외 발생!
✔️ '정수를 입력하지 않았을 때' 를 조건으로 구분해서, 해당 상황일 때 프로그램이 죽지 않고 정상 종료되도록 한다.
# 조건문으로 예외 처리
input_num = input("정수 입력 > ")
# 사용자 입력이 숫자로만 구성되어 있을 때
if input_num.isdigit():
number = int(input_num)
print("입력받은 숫자: ", number)
else:
print("정수가 입력되지 않았습니다.")
# 정수 입력한 경우
정수 입력 > 5
입력받은 숫자: 5
# 문자열 입력한 경우
정수 입력 > 문자열
정수가 입력되지 않았습니다.
★ try except 구문을 사용하여 예외 처리하기
- 파이썬에서 제공하는 예외를 처리할 수 있는 구문
- 어떤 상황에 예외가 발생하는 지 모두 파악하지 않아도 프로그램이 강제로 죽는 상황을 막을 수 있다.
try: 예외가 발생할 가능성이 있는 코드 except: 예외가 발생했을 때 실행할 코드 |
# try except 구문으로 예외 처리
try:
# 예외가 발생할 가능성이 있는 구문
input_num = int(input("정수 입력 > "))
print("입력받은 숫자: ", input_num)
except:
# 예외 발생 시 실행할 구문
print("정수가 입력되지 않았습니다.")
# 정수 입력
정수 입력 > 6
입력받은 숫자: 6
# 정수가 아닌 문자열 입력
정수 입력 > 안녕하세요
정수가 입력되지 않았습니다.
★ try except 구문과 pass 키워드를 조합해서 사용하기
- try except 구문 사용 시 except 구문에 아무것도 넣지 않으면 구문 오류가 발생하므로, pass 키워드를 추가한다.
try: 예외가 발생할 가능성이 있는 코드 except: pass |
★ try except else 구문
- try except 구문에 else 구문을 넣으면 '예외가 발생 하지 않았을 때 실행할 코드' 를 지정할 수 있다.
- 예외가 발생할 가능성이 있는 코드만 try 구문 내부에 넣고, 나머지는 else로 빼는 경우가 많다.
# try except else 구문으로 예외 처리
try:
# 예외가 발생할 가능성이 있는 구문
input_num = int(input("정수 입력 > "))
except:
print("정수가 아닙니다.")
else:
print("입력받은 숫자: ", input_num)
# 정수를 입력한 경우
정수 입력 > 10
입력받은 숫자: 10
# 정수를 입력하지 않은 경우
정수 입력 > hello
정수가 아닙니다.
★ finally 구문
- 예외 처리 구문에서 가장 마지막에 사용할 수 있는 구문.
- 예외 발생 여부와 상관 없이 무조건 실행할 때 사용하는 코드
try: 예외가 발생할 가능성이 있는 코드 except: 예외가 발생했을 때 실행할 코드 else: 예외가 발생하지 않았을 때 실행할 코드 finally: 무조건 실행할 코드 |
# try except 구문으로 예외 처리
try:
# 예외가 발생할 가능성이 있는 구문
input_num = int(input("정수 입력 > "))
print("입력받은 숫자: ", input_num)
except:
print("정수가 아닙니다.")
else:
print("예외가 발생하지 않았습니다.")
finally:
print("프로그램이 모두 끝났습니다.")
# 정수를 입력한 경우
정수 입력 > 10
입력받은 숫자: 10
예외가 발생하지 않았습니다.
프로그램이 모두 끝났습니다.
# 정수를 입력하지 않은 경우
정수 입력 > 테스트
정수가 아닙니다.
프로그램이 모두 끝났습니다.
※ try 구문은 단독으로 사용할 수 없고, 반드시 except 구문이나 finally 구문과 함께 사용해야 한다.
※ else 구문은 반드시 except 구문 뒤에 사용해야 한다.
★ finally 키워드를 사용해서 코드를 깔끔하게 만들기
- finally 키워드는 무조건 실행되기 때문에, 반복문이나 함수 내부에서 사용하면 좋다.
- 예시) 파일 처리 코드
- try 구문에서 return 키워드로 빠져 나가거나 예외 발생으로 try 구문 중간에 빠져 나가는 경우에 파일이 제대로 닫히지 않는 문제가 발생할 수 있음
- finally 구문을 활용하여 try 구문을다 수행하지 않고 빠져나가더라도 무조건 파일이 닫히게 할 수 있다.
[예외 고급]
✏️ 예외 객체 (exception object) : 프로그램에서 예외가 발생하면 예외와 관련된 정보가 생긴다. 그리고 예외 정보는 예외 객체에 저장된다.
try: 예외가 발생할 가능성이 있는 구문 except 예외의 종류 as 예외 객체를 활용할 변수 이름: 예외가 발생했을 때 실행할 구문 |
★ 예외의 종류가 뭔지 모를 땐 Exception 을 사용한다.
# try except 구문으로 예외 처리
try:
# 예외가 발생할 가능성이 있는 구문
input_num = int(input("정수 입력 > "))
print("입력받은 숫자: ", input_num)
except Exception as exception:
# 예외 객체의 자료형 출력
print("type(exception): ", type(exception))
# 예외 객체 출력
print(exception)
# 문자를 입력한 경우 예외 발생
정수 입력 > hi
type(exception): <class 'ValueError'>
invalid literal for int() with base 10: 'hi'
★ 프로그램 실행 중에 여러 개의 예외가 발생할 수 있다. 파이썬에서는 execpt 구문 뒤에 예외의 종류를 입력해서 예외를 구분할 수 있다.
try: 예외가 발생할 가능성이 있는 구문 except 예외의 종류A: 예외A가 발생했을 때 실행할 구문 except 예외의 종류B: 예외B가 발생했을 때 실행할 구문 except 예외의 종류C: 예외C가 발생했을 때 실행할 구문 |
list_a = [52, 273, 32, 72, 100]
# try except 구문으로 예외 처리
try:
# 예외가 발생할 가능성이 있는 구문
input_num = int(input("정수 입력 > "))
print("list의 요소 :", list_a[input_num])
except ValueError:
# ValueError가 발생하는 경우
print("정수를 입력해 주세요")
except IndexError:
# IndexError가 발생하는 경우
print("인덱스의 값을 벗어났습니다.")
# 정수가 아닌 값 입력 : ValueError 발생
정수 입력 > Hello
정수를 입력해 주세요
# 리스트의 인덱스를 넘는 값 입력 : IndexError 발생
정수 입력 > 10
인덱스의 값을 벗어났습니다.
✏️ 예외를 구분할 때 각각의 except 구문 뒤에 예외 객체를 붙여 활용할 수 있다. as 키워드를 사용한다.
list_a = [52, 273, 32, 72, 100]
# try except 구문으로 예외 처리
try:
# 예외가 발생할 가능성이 있는 구문
input_num = int(input("정수 입력 > "))
print("list의 요소 :", list_a[input_num])
except ValueError as excption:
# ValueError가 발생하는 경우
print("정수를 입력해 주세요")
# 예외 객체 출력
print("exception: ", excption)
except IndexError as excption:
# IndexError가 발생하는 경우
print("인덱스의 값을 벗어났습니다.")
# 예외 객체 출력
print("exception: ", excption)
# IndexError 발생시킨 경우
정수 입력 > 100
인덱스의 값을 벗어났습니다.
exception: list index out of range
★ except 구문으로 예외를 구분하는 경우, 예외 조건에 일치하는 것이 없다면 프로그램이 종료된다.
→ except 구문의 마지막에는 Exception 을 추가하여 프로그램의 종료를 막는 것이 좋다.
★ '이 코드에서 어떤 예외가 발생할 것인지' 잘 예측하는 것이 중요하다.
list_a = [52, 273, 32, 72, 100]
# try except 구문으로 예외 처리
try:
# 예외가 발생할 가능성이 있는 구문
input_num = int(input("정수 입력 > "))
print("list의 요소 :", list_a[input_num])
예외발생()
except ValueError as excption:
# ValueError가 발생하는 경우
print("정수를 입력해 주세요")
# 예외 객체 출력
print("exception: ", excption)
except IndexError as excption:
# IndexError가 발생하는 경우
print("인덱스의 값을 벗어났습니다.")
# 예외 객체 출력
print("exception: ", excption)
except Exception as exception:
# ValueError 와 IndexError가 아닌 예외가 발생한 경우
print("이외의 예외가 발생하였습니다.")
print(type(exception), exception)
# IndexError / ValueError가 아닌 예외 발생
정수 입력 > 1
list의 요소 : 273
이외의 예외가 발생하였습니다.
<class 'NameError'> name '예외발생' is not defined
✏️ raise 구문 : 예외를 강제로 발생시키고 싶을 때 사용하는 구문이다.
raise 예외 객체 |
Chapter 07. 모듈
[표준 모듈]
✏️ 모듈(module) : 파이썬은 모듈 기능을 활용해 코드를 분리하고 공유한다. 모듈은 여러 변수와 함수를 가지고 있는 집합체 이다.
1️⃣ 표준 모듈 : 파이썬에 기본적으로 내장되어 있는 모듈
2️⃣ 외부 모듈 : 다른 사람들이 만들어서 공개한 모듈
✅ 모듈을 가져올 때는 import 구문을 사용하며, 코드의 가장 위에 작성한다.
import 모듈 이름 # 예시 : 수학과 관련된 모듈인 math모듈 가져오기 import math |
✅ 모듈을 가져온 후 모듈에서 제공하는 변수나 함수를 사용할 수 있다.
import math
# 사인값을 구하는 내장 함수
math.sin(1)
# 0.8414709848078965
✅ from 구문
- 모듈을 읽어들일 때 from 구문을 사용해서, 모듈에서 가져오려는 변수나 함수 앞에 모듈 이름을 생략할 수 있다.
from 모듈 이름 import 가져오고 싶은 변수 또는 함수 |
from math import sin
# math 를 붙이지 않아도 사용이 가능해 졌다.
sin(1)
# 0.8414709848078965
✅ as 구문
- 모듈을 가져올 때 이름을 변경해서 사용하고 싶은 경우 as 구문을 사용한다.
from 모듈 as 사용하고 싶은 식별자 |
import math as m
# math 모듈을 m 이라는 이름으로 치환해서 사용한다.
m.sin(1)
# 0.8414709848078965
[기본 미션 : 구문 오류와 예외의 차이 설명하기 (p.379 1번 문제) ]
✅ 구문 오류는 프로그램이 실행되기 전에 발생하는 문법적인 오류이며, 해결하지 않으면 프로그램 자체가 실행 되지 않는다. 예외는 프로그램이 실행 중에 발생하는 오류로, 예외 처리 (ex. try except 구문) 를 통해 해결할 수 있다.
[선택 미션 : p. 381 3번 문제 풀고 인증하기]
1️⃣ 정수형과 문자를 연산할 수 없어서 발생하는 예외
2️⃣ 문자열 "안녕하세요" 를 정수로 변환할 수 없어서 발생하는 예외
3️⃣ 괄호가 제대로 닫히지 않아서 발생하는 구문 오류
4️⃣ 리스트의 인덱스 범위를 벗어난 예외
'개발 > 혼공학습단_11기' 카테고리의 다른 글
[혼공파] 혼공학습단 11기 회고 (0) | 2024.02.17 |
---|---|
[혼공파] 혼자 공부하는 파이썬_6주차 (0) | 2024.02.15 |
[혼공파] 혼자 공부하는 파이썬_4주차 (0) | 2024.01.28 |
[혼공파] 혼자 공부하는 파이썬_3주차 (1) | 2024.01.21 |
[혼공파] 혼자 공부하는 파이썬_2주차 (2) (0) | 2024.01.13 |