1차 프로젝트 중 product 의 views.py 작성의 코드리뷰를 받았고 그 중 한번도 해보지 않았던 숙제가 주어졌다!!
정말 어떻게 풀어야 하나 막막하고 구글링을 계속 해보았다😂
딕셔너리를 객체들로 가지고 있는 리스트를 만드는 코드였는데 그 코드를 리스트 컴프리핸션으로 바꿔서 가독성과 효율을 높여 보라는 멘토님의 조언을 받아 시도하게 되었다. 처음에 막막했던 코드가 구글링을 많이 하여 기본 틀을 잡고 끙끙거리던 와중에 드디어 해결을 했다! 프로젝트 내내 3-4시간씩밖에 못 잤기 때문에 오늘은 일찍 자볼까 하는 나의 결심이 깨지게 되는 순간이었다...ㅎㅎ 성격이 해결해야 하는 게 있으면 해결을 해야 잠이 오는 편이라... 오늘도 또 그렇게 새벽이 되었다. 하지만!!!! 개발을 공부한 기간에 비해 예제들을 꽤 많이 풀어보았다고 생각했지만 이번처럼 뿌듯하고 설레본건 처음이다 ㅎㅎㅎ 그래서 블로그에 남긴다😆
# 처음에 작성한 코드
total_count = len(products)
results = []
for data in products:
price = int(data.price)
discount_rate = int(data.discount_rate)
discount_price = 0
if discount_rate != 0:
discount_price = price // 100 * (100 - discount_rate)
add = {
'main_image' : data.main_image,
'name' : data.name,
'total_count' : total_count,
'price' : price,
'discount_rate' : discount_rate,
'discount_price': discount_price,
'product_id' : data.id
}
results.append(add)
# 리스트 컴프리핸션으로 수정한 코드!!!
results = [{
'main_image' : data.main_image,
'name' : data.name,
'total_count' : len(products),
'price' : int(data.price),
'discount_rate' : int(data.discount_rate),
'discount_price': int(data.price) // 100 * (100 - int(data.discount_rate)) if int(data.discount_rate) != 0 else 0,
'product_id' : data.id} for data in products]