- Python 강의 | 4. Python 심화 [try - exception을 활용한 에러 처리 / stacktrace의 이해 / 축약식 / lambda - map - filter - sort 활용하기]
1. try / exception을 활용한 에러 처리
에러가 발생했을때 프로그램이 종료되지않고 except구문으로 넘어가 프로그램이 예기치 않게 종료되는걸 막아준다.
[Error 종류]
number = input()
try:
int(number)
10 / number 👉 10을 number로 나눈다.
except ValueError: 👉 int로 변환하는 과정에서 에러가 발생했을 때
print(f"{number}은(는) 숫자가 아닙니다.")
except ZeroDivisionError: 👉 0으로 나누면서 에러가 발생했을 때
print("0으로는 나눌수 없습니다.")
except Exception as e: 👉 위에서 정의하지 않은 에러가 발생했을 때(권장하지 않음)
print(f"예상하지 못한 에러가 발생했습니다. error : {e}")
ValueError : 자료형이 맞지 않을때
ZeroDivisionError : 자연수는 0으로 나눌 수 없다 = 0으로 나누면서 생기는 오류
Exception as e : 설정한 예외처리 외의 오류가 생겼을경우 (비추)
2. stacktrace의 이해
stacktrace란? 에러가 발생했을 때 에러 발생 위치를 찾기위해 호출된 함수들의 목록을 보여주고 추적해 간다.
3. 축약식(Comprehension)
코드를 짧게 축약하는 것
list, set, tuple, dict 자료형이 축약식을 지원한다.
[if 축약식]
num = 3
if num % 2 == 0 :
result = '짝수'
else:
result = '홀수'
short = ('짝수' if num % 2 == 0 else '홀수') 👉 '참 결과값' if 참 조건식 else '거짓 결과값'
print(f'{num}은 {result} 입니다')
print(f'{num}은 {short} 입니다')
👉 결과값 동일
[for 축약식]
a = [1,2,3,4,5,6]
a_list = [1,2,3,4,5,6]
b = []
c = []
for i in a :
b.append(i*2)
c = [i*2 for i in a_list] 👉 인자가 해야 할 동작 for 인자 in 어디서?
print(b)
print(c)
👉 결과값 동일
# [list에 담길 값 for 요소 in 리스트]
numbers = [x for x in range(5)] # [0, 1, 2, 3, 4] 👉 리스트 선언
# 조건문은 축약식 뒷부분에 작성하며, 축약식이 True인 경우 list에 값이 담긴다.
even_numbers = [x for x in range(10) if x % 2 == 0] # [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) 👉 (리스트의 [1번째 요소들의 합]) / 리스트 갯수
print(average_age) # 27.4
조건문은 축약식 뒷부분에 작성하며, 축약식이 True인 경우 list에 값이 담긴다.
또한, list 축약식의 []를 ()혹은 {}로 바꿔주면 tuple, set 축약식을 사용하실수 있다.
[dictionary 축약식 활용]
people = [
("lee", 32, "man"),
("kim", 23, "man"),
("park", 27, "woman"),
("hong", 29, "man"),
("kang", 26, "woman")
]
people = {name: {"age": age, "gender": gender} for name, age, gender in people}
print(people)
dictionary 축약은 key:value 형태로 지정해야한다.
{main key값 : {key : value, key : value} for ~ } 형태
4. lambda / map / filter / sort 활용
[lambda]
lambda : 간단한 함수는 따로 def로 정의하지 않고 lambda로 간결하게 표현
👉 변수 = (lambda x : x 조건 , 인자) → 인자가 조건에 해당하면 그 값을 가져와라 'x'는 인자명 과 같으면 안됨
주로, map / filter / sort 함수와 함께 사용된다.
- lambda - map 활용
numbers = [1, 2, 3, 4]
double_numbers = list(map(lambda x: x*2, numbers)) 👉 numbers에서 가져온 값들을 두배 후 map 함수를 호출
print(double_numbers) # [2, 4, 6, 8]
- lambda - filter 활용
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
even_numbers = list(filter(lambda x: x%2 == 0, numbers))
print(even_numbers) # [2, 4, 6, 8]
- lambda - sort 활용
people = [
("lee", 32),
("kim", 23),
("park", 27),
("hong", 29),
("kang", 26)
]
people.sort(key=lambda x: x[1]) 👉 [1번째 요소인] 나이순으로 정렬
print(people)
'woncoding > TIL' 카테고리의 다른 글
| TIL | 9.16.금 [Python 복습 🐢] (0) | 2022.09.19 |
|---|---|
| TIL | 9.15.목 [Python 심화] (1) | 2022.09.16 |
| TIL | 9.13.화 [Python 심화] (0) | 2022.09.13 |
| TIL | 9.10.토 [Git / GitHub] (0) | 2022.09.12 |
| TIL | 9.9.금 [Git / GitHub] (0) | 2022.09.11 |