복대가리의 개발

[기타] 스터디/[혼공학습단 9기] 파이썬

파이썬 공부 (5)

복대가리 2023. 2. 11. 10:28
728x90

이번 포스팅 내용

1. 구문 오류와 예외

2. 예외 고급

3. 표준 모듈

 

1. 구문 오류와 예외

오류의 종류

프로그래밍 언어의 오류에는 크게 두 가지 종류가 있습니다.

  1. 프로그램 실행 전에 발생하는 오류 -> 구문 오류
  2. 프로그램 실행 중에 발생하는 오류 -> 예외 또는 런타임 오류

 

구문 오류

괄호의 개수, 들여쓰기 문제 등으로 프로그램이 실행되기도 전에 발생하는 오류입니다.

 

중요한 것은 SyntaxError 즉 구문에 문제가 있어 프로그램이 실행조차 되지 않는 오류입니다.

예외

예외 또는 런타임 오류는 실행 중에 발생하는 오류를 의미합니다.

 

"NameError: name 'list_a' is not defined" 라는 예외는 list_a 라는 이름을 가진 것이 정의되지 않았다는 의미 이므로

list_a라는 이름을 정의해주면 됩니다.

다음과 같이 수정하면 정상적으로 실행할 수 있습니다.

구문 오류와 예외의 차이 (기본미션)

구문 오류는 프로그램의 문법적인 오류로 프로그램이 실행조차 되지 않게 만드는 오류이고, 예외는 프로그램 실행중에 발생하는 오류입니다.

 

구문과 예외에 대한 간단한문제!

다음 중 어떤 에러가 예상되는지 확인해보세요.

1. output = 10 + "개"
2. int("안녕하세요")
3. cursor.close)
4. [1, 2, 3, 4, 5][10]

 

1번의 경우 예외 TypeError가 발생합니다.

2번의 경우 예외 ValueError가 발생합니다.

3번의 경우 구문오류가 발생합니다.

4번의 경우 구문오류가 발생합니다.

기본 예외 처리

예외를 해결하는 모든 것을 예외 처리라고 부르며, 예외를 처리하는 방법은 두 가지로 나뉘어집니다.

  1. 조건문을 사용하는 방법
  2. try 구문을 사용하는 방법

예외 상황 확인하기

 

위와 같은 코드에서 만약 정수를 입력하지 않으면 어떻게 될가요?

정수로 변환할 수 없는 문자열을 입력하였습니다.

 

다음과 같이 예외상황일 때 어떻게 처리하는지 알아보겠습니다.

조건문으로 예외 처리하기

문자열의 isdigit()함수를 이용하여 숫자로만 구성된 글자인지 확인할 수 있습니다.

 

코드와 같이 조건문을 이용하여 예외를 처리할 수 있습니다.

프로그램을 작성할 때는 항상 예외적인 상황까지 모두 생각하는 습관을 기르는 게 좋습니다.

try except 구문

조건문으로 예외를 처리 할 수 없는 경우에 try except구문을 사용하는 편입니다.

 

1
2
3
4
try:
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생했을 때 실행할 코드
cs

 

위에서 조건문으로 처리했는 코드를 가지고 try except 구문으로 변경해보겠습니다.

 

try except 구문과 pass 키워드 조합하기

프로그래밍을 하다보면 프로그램이 강제 종료되는 것부터 막자는 목적으로 except 구문에 아무것도 넣지 않고 pass 키워드를 넣는 경우가 있습니다.

 

try except 구문으로 감싸고 예외가 발생하지 않는 경우에만 append 하도록 하는 코드입니다.

try except else 구문

try except 구문 뒤에 else 구문을 붙여서 사용하면 '예외가 발생하지 않았을 때 실행할 코드'를 지정할 수 있습니다.

 

1
2
3
4
5
6
try:
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생했을 때 실행할 코드
else:
    예외가 발생하지 않았을 때 실행할 코드
cs

 

 

finally 구문

예외 처리 구문에서 가장 마지막에 사용할 수 있는 구문입니다.

예외가 발생하든 발생하지 않든 무조건 실행할 때 사용하는 코드입니다.

 

1
2
3
4
5
6
7
8
9
10
try:
    예외가 발생할 가능성이 있는 코드
except:
 
    예외가 발생했을 때 실행할 코드
else:
 
    예외가 발생하지 않았을 때 실행할 코드
finally:
    무조건 실행할 코드
cs

 

 

예외 처리 구문은 다음과 같은 규칙을 지켜야합니다.

  • try 구문은 단독으로 사용할 수 없으며, 반드시 except 구문 또는 finally 구문과 함께 사용해야합니다.
  • else 구문은 반드시 except 구문 뒤에 사용해야 합니다.

try 구문 내부에서 return 키워드를 사용하는 경우

 

try 구문 중간에서 return을 사용하여 탈출해도 finally 구문은 무조건 실행이 됩니다.

반복문과 함께 사용하는 경우

 

반복문에서 break로 빠져나갈 때도 마찬가지로 무조건 실행됩니다.

2. 예외 고급

프로그래밍 언어에서 예외가 발생하면 예외와 관련된 정보가 생깁니다.

이러한 예외 정보는 예외객체에 저장됩니다.

 

1
2
3
4
try:
    예외가 발생할 가능성이 있는 구문
except 예외의 종류 as 예외 객체를 활용할 변수 이름:
    예외가 발생했을 때 실행할 구문
cs

 

예외 객체

처음 예외 객체를 사용해 보면 너무 많은 종류로 인해서 보통 'Exception'을 사용합니다.

 

문자열을 입력하였을 때 해당하는 예외가 발생합니다.

예외 구분하기

예외 객체를 사용하면 except 구문을 if 조건문처럼 사용해서 예외를 구분할 수 있습니다.

 

except 구문 뒤에 예외의 종류를 입력해서 예외를 구분할 수 있습니다.

 

1
2
3
4
5
6
7
8
try:
    예외가 발생할 가능성이 있는 구문
except 예외의 종류A:
    예외A가 발생했을 때 실행할 구문
except 예외의 종류B:
    예외B가 발생했을 때 실행할 구문
except 예외의 종류C:
    예외C가 발생했을 때 실행할 구문
cs

 

 

예외 구분 구문과 예외 객체

예외를 구분할 때 각각의 except 구문 뒤에 예외 객체를 붙여 활용할 수 있습니다.

 

 

모든 예외 잡기

 

만약 위의 코드에서 try 구문 중간에 예외처리에 빠진게 있다면 프로그램이 죽어버리는 문제가 발생할 수 있습니다.

그렇기 때문에 모든 예외의 부모라고 할 수 있는 Exception을 넣어 주어 프로그램이 죽지 않게 하는 것이 좋습니다.

raise 구문

아직 구현되지 않은 부분에서 강제로 예외 발생시키는 방법입니다.

 




3. 표준 모듈

파이썬은 모듈이라는 기능을 활용해 코드를 분리하고 공유합니다.

크게 표준 모듈과 외부 모듈로 나뉘는데, 기본적으로 내장되어 있는 모듈을 '표준 모듈', 다른사람들이 만들어서 공개한 모듈을 '외부 모듈'이라고 부릅니다.

모듈을 가져올 때는 다음과 같이 import 구문을 코드 맨 위에 작성합니다.

 

1
import 모듈 이름
cs

 

모듈 사용의 기본 : math 모듈

math 모듈의 경우 수학과 관련된 기능을 가지고 있습니다.

 

이외에도 훨씬 더 많은 것들이 있습니다.

from 구문

모듈에는 정말 많은 변수와 함수가 들어있습니다. 하지만 그중에서 우리가 활용하고 싶은 기능은 극히 일부일 수 있으며, math.cos(), math.sin() 처럼 앞에 무언가를 계속 입력하는 것이 귀찮다고 느껴질 수도 있습니다.

이때는 다음과 같이 from 구문을 사용합니다.

1
from 모듈 이름 import 가져오고 싶은 변수 또는 함수
cs

 

만약 모든 기능을 가져오며 'math'도 붙이기 싫다면 '* 기호'를 사용합니다.

 

1
from math import *
cs

 

as 구문

모듈을 가져올 때 이름 충돌이 발생하는 경우가 있을 수 있습니다, 또는 모듈이름이 너무 길어 짧게 줄여 사용하고 싶을 때 as 구문을 사용합니다.

 

random 모듈

랜덤한 값을 생성할 때 사용하는 모듈입니다.

 

sys 모듈

시스템과 관련된 정보를 가지고 있는 모듈입니다. 

명령 매개변수를 받을 때 많이 사용합니다.

 

os 모듈

운영체제와 관련된 기능을 가진 모듈입니다. 새로운 폴더를 만들거나 폴더 내부의 파일 목록을 보는 일도 모두 가능합니다.

datetime 모듈

날짜, 시간과 관련된 모듈로 날짜 형식을 만들 때 자주 사용되는 코드들로 구성되어 있습니다.

 



time 모듈

시간과 관련된 기능을 다룰 때는 time 모듈을 사용합니다.

time 모듈로도 날짜와 관련된 처리를 할 수 있지만, 그런 처리는 datetime 모듈을 더 많이 사용합니다.

sleep()함수를 실행하는 경우 특정 시간동안 코드를 멈춥니다.

 

print("start")가 실행되고 3초 후에 print("end")가 호출 됩니다.

urllib 모듈

URL을 다루는 라이브러리입니다. 즉, 인터넷 주소를 활용할 때 사용하는 라이브러리입니다.

 

실행 결과를 보면 문자열처럼 보이지만 바이너리 데이터입니다.

728x90

'[기타] 스터디 > [혼공학습단 9기] 파이썬' 카테고리의 다른 글

파이썬 공부 (6)  (0) 2023.02.19
파이썬 공부 (4)  (0) 2023.02.05
파이썬 공부 (3)  (0) 2023.01.24
파이썬 공부 (2)  (0) 2023.01.13
파이썬 공부 (1)  (0) 2023.01.06