🎁 혼공파 5주차 CH06~07-1 🎁
구문 오류와 예외의 차이 설명하기(p.379 1번)
p.381 3번 문제, 인증샷
❤ 06-1 구문 오류와 예외
* 구문 오류 - 프로그램 실행 전에 발생하는 오류
구문 오류는 괄호의 개수, 들여쓰기 문제 등으로 프로그램이 실행되기도 전에 발생하는 오류이다.
ⓐ SyntaxError : 구문에 문제가 있어 프로그램이 실행조차 되지 않는 오류
* 예외(런타인 오류) - 프로그램 실행 중에 발생하는 오류
* 기본 예외 처리 - 예외를 해결하는 모든 것
ⓐ 조건문을 사용하는 방법
ⓑ try 구문을 사용하는 방법
try: 예외가 발생할 가능성이 있는 코드 except: 예외가 발생했을 때 실행할 코드 |
이를 사용하면 어떤 상황에 예외가 발생하는지 완벽하게 이해하고 있지 않아도 프로그램이 강제로 죽어 버리는 상황을 막을 수 있다.
try: 예외가 발생할 가능성이 있는 코드 except: pass |
> 숫자로 변환할 수 없는 문자열이라면 float(item)를 실행할 때 예외가 발생한다. 이를 이용해서 try except 구문으로 감싸고 예외가 발생하지 않는 경우에만 list_number.append(item)가 실행되도록 만드는 코드이다.
try except 구문은 if 구문을 활용한 코드에 비해 아주 약간 느리다.
ⓒ try except else 구문
try: 예외가 발생할 가능성이 있는 코드 except: 예외가 발생했을 때 실행할 코드 else: 예외가 발생하지 않았을 때 실행할 코드 |
ⓓ finally 구문
예외가 발생하든 발생하지 않든 무조건 실행할 때 사용하는 코드이다.
try: 예외가 발생할 가능성이 있는 코드 except: 예외가 발생했을 때 실행할 코드 else: 예외가 발생하지 않았을 때 실행할 코드 finally: 무조건 실행할 코드 |
✔ try 구문은 단독으로 사용할 수 없으며, 반드시 excpet 구문 또는 finally 구문과 함께 사용해야 한다.
✔ else 구문은 반드시 except 구문 뒤에 사용해야 한다.
따라서 정리하면 try 구문은 다음 조합들을 사용할 수 있다.
⊙ try + except 구문 조합 ⊙ try + except + else 구문 조합 ⊙ try + except + finally 구문 조합 ⊙ try + except + else + finally 구문 조합 ⊙ try + finally 구문 조합 |
* 파일이 제대로 닫혔는지 확인하기
<기본 미션>
<추가 미션>
❤ 06-2 예외 고급
* 예외 객체
프로그래밍 언어는 예외가 발생하면 예외와 관련된 정보가 생긴다.
try: 예외가 발생할 가능성이 있는 구문 except 예외의 종류 as 예외 객체를 활용할 변수 이름: 예외가 발생했을 때 실행할 구문 |
* 예외 구분하기
예외 객체를 사용하면 except 구문을 if 조건문처럼 사용해서 예외를 구분할 수 있다.
try: 예외가 발생할 가능성이 있는 구문 excpet 예외의 종류A: 예외A가 발생했을 때 실행할 구문 excpet 예외의 종류B: 예외B가 발생했을 때 실행할 구문 |
* 예외 구분 구문과 예외 객체
예외를 구분할 때 각각의 except 구문 뒤에 예외 객체를 붙여 활용할 수도 있다. as 키워드를 사용하면 된다.
* raise 구문
아직 구현되지 않은 부분에 일부러 예외를 발생시켜 프로그램을 죽게 만들어 잊어버리지 않도록 raise 키워드를 이용해 예외를 강제로 발생시킨다.
raise 예외 객체 |
❤ 07-1 표준 모듈
* 모듈 사용의 기본: math 모듈
import math |
'impot math'를 입력하면 해당 문장 이후에 'math'라는 모듈을 사용할 수 있다.
* from 구문
from 모듈 이름 import 가져오고 싶은 변수 또는 함수 |
from math import * |
를 사용하면 모든 기능을 가져올 수 있다. 하지만 모든 것을 가져오면 식별자 이름에서 충돌이 발생할 수 있으므로, from 구문을 사용할 때에는 최대한 필요한 것만 가져와서 사용하는 것이 좋다.
* as 구문
import 모듈 as 사용하고 싶은 식별자 |
이를 활용하여 impot math as m 이런 식으로 코드를 사용하면 math 모듈을 m이라는 이름 등으로 사용할 수 있다.
m.sin(1) 이런 식으로 !
* random 모듈
import random |
random 모듈은 랜덤한 값을 생성할 때 사용하는 모듈이다.
* sys 모듈
sys 모듈은 시스템과 관련된 정보를 가지고 있는 모듈이다. 명령 매개변수를 받을 때 많이 사용한다.
* os 모듈
os 모듈은 운영체제와 관련된 기능을 가진 모듈이다. 새로운 폴더를 만들거나 폴더 내부의 파일 목록을 보는 일도 모두 os 모듈을 활용해서 처리한다.
* datetime 모듈
datetime 모듈은 date, time과 관련된 모듈로, 날짜 형식을 만들 때 자주 사용되는 코드들로 구성되어 있다.
output_a처럼 strftime() 함수를 사용하면 시간을 형식에 맞춰 출력할 수 있다. 그러나 한국어 등의 문자는 매개변수에 넣을 수 없다. 그래서 이를 보완하고자 output_b와 output_c와 같은 형식을 사용한다.
이 외에도 다른 시간 처리 기능을 활용할 수 있다. timedelat() 함수를 사용하면 특정한 시간의 이전 또는 이후를 구할 수 있다. 하지만 1년 후와 같이 몇 년 후를 구하는 기능은 없어서 replace() 함수를 사용하여 아예 날짜 값을 교체하는 것이 일반적이다.
#특정 시간 요소 교체하기
print("# now.replace()로 1년 더하기")
output = now.replace(year=(now.year+1))
print(output.strftime("%Y{} %m{} %d{} %H{} %M{} %S{}").format(*"년월일시분초"))
* time 모듈
time 모듈은 시간과 관련된 기능을 다룰 때 사용하는 모듈이다. time 모듈은 유닉스 타임을 구할 때, 특정 시간 동안 코드 진행을 정지할 때 많이 사용한다.
import time |
* urllib 모듈
urllib 모듈은 URL을 다루는 라이브러리이다. URL은 'Uniform Resource Locator'라는 뜻으로, 인터넷 주소를 활용할 때 사용한다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ정리ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ