_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

woncoding/TIL

TIL | 9.14.수 [Python 심화]

2022. 9. 14. 21:28

 - 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 / tuple / set 축약식 활용]
# [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
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 9.16.금 [Python 복습 🐢]
    • TIL | 9.15.목 [Python 심화]
    • TIL | 9.13.화 [Python 심화]
    • TIL | 9.10.토 [Git / GitHub]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바