try / exeption을 활용한 에러 처리
try와 except를 통해 에러가 발생했을 때 실행 중인 코드를 중단하지 않고 예외처리를 할 수 있다.
예를 들어 조건문인 if와 else처럼 try에서 에러가 발생했을 때 그대로 멈추지 않고 except로 넘겨주어 별개의 동작을 수행할 수 있다.
number = input()
try:
int(number)
10 / number
except ValueError: # int로 변환하는 과정에서 에러가 발생했을 떄
print(f"{number}은(는) 숫자가 아닙니다.")
except ZeroDivisionError: # 0으로 나누면서 에러가 발생했을 때
print("0으로는 나눌수 없습니다.")
except Exception as e: # 위에서 정의하지 않은 에러가 발생했을 때(권장하지 않음)
print(f"예상하지 못한 에러가 발생했습니다. error : {e}")
예제문과 같이 try에서 int로 변환할 때 에러가 발생한다면 except의 ValueError가 실행되어 print 해주고 try에서 10을 0(number)으로 나눌 때 ZeroDivisionError로 넘어가 print를 해준다.
그리고 except ValueError와 같이 에러 type이 여러가지가 있으며 이는 파이썬에서 정의하고 있는 에러 타입이므로 코드를 실행했을 때 예외처리를 하고 싶은 에러 타입을 except에 입력하고 수행할 동작을 입력해주어야 한다.
try/except를 어디에 입력해야 할 지 막막했는데 함수에서 실행한다고 가정하면 함수 안에서 예외처리를 할 부분에 except를 입력해주고 기본적으로 실행할 명령을 try에 넣어주면 될 것 같다.
축약식(Comprehension)
축약식은 긴 코드를 간략하게 줄이는 것이다.
잘못 사용 할 경우 가독성이 떨어지고, 추후 코드 관리가 힘들 수 있기에 필요할 때만 축약식을 사용하자.
축약식은 list,set,tuple,dict 자료형에서 사용할 수 있고, 사용하는 괄호와 어떤 형태로 사용하는지에 따라 저장되는 자료형이 달라진다.
#list 축약식
numbers = [x for x in range(5)]
(range에 있는 요소가 x에 담기고 x가 변수에 값을 담는다.)
result =[0, 1, 2, 3, 4]
#조건식을 추가할 수 도 있다
even_numbers = [x for x in range(10) if x % 2 == 0] #
(조건문은 축약식 뒷부분에 작성하며, 축약식이 True인 경우 list에 값이 담긴다.)
result = [0, 2, 4, 6, 8]
#아래와 같이 활용할 수도 있다.
people = [
("lee", 32),
("kim", 23),
("park", 27),
("hong", 29),
("kang", 26)
]
average_age = sum([x[1] for x in people]) / len(people)
(축약식의 합을 sum함수로 더하여 people의 길이 만큼 나누어 평균 값을 변수에 담는다.)
result = 27.4
💡 list 축약식의 괄호 []를 () or {}로 바꾸면 tuple, set 축약식으로 사용할 수 있다.