Batter way10

매일 공부(ML)·2022년 2월 4일
0

대입식을 사용해 반복을 피해라

대입식

  • a := b(왈러스 연산자 사용)

  • 고질적인 코드 중복 문제 해결

  • 대입문이 쓰일 수 없는 우치에서 변수에 값을 대입하므로 유용

  • 명확성과 코드의 가독성 증가

  • 변수에 값 대입 후 이 값을 평가하여 프로그램 흐름을 어떻게 제어할지 판단

*예시1

if count := fresh_fruit.get('레몬', 0):
    make_lemonade(count)
    
else:
    out_of_stock()

*예시2

if (count := fresh_fruit.get('사과', 0)) >= 4:
    make_cider(count)
else:
    out_of_stock()

*예시3(if, elif, else문)

if (count := fresh_fruit.get('바나나', 0)) >= 2:
    pieces = slice_bananas(count)
else:

    pieces = 0
   
try:
    smoothies = make_smoothies(pieces)
except Out0fBananas:
    out_of_stock()
  • 들여쓰기와 내포를 줄여서 가독성 늘리기
#왈러스 연산자 사용X
count = fresh_fruit.get('바나나', 0)
if count >= 2:
    pieces = slice_bananas(count)
    to_enjoy = make_smoothies(pieces)
else:
    count = fresh_fruit.get('사과', 0)
    if count >= 4:
        to_enjoy = make_cider(count)
    else:
        count = make_cider(count)
        if count:
            to_enjoy = make_lemonade(count)
        else:
            to_enjoy'= '아무것도 없음'
            
 #왈러스 연산자 사용o
 if (count := fresh_fruit.get('바나나', 0)) >= 2:
     pieces = slice_bananas(count)
     to_enjoy = make_smoothies(pieces)
 elif (count := fresh_fruit.get('사과', 0)) >= 4:
     to_enjoy = make_cider(count)
 elif count := fresh_fruit.get('레몬', 0):
     to_enjoy = make_lemonade(count)
 else:
     to_enjoy = '아무것도 없음'

  • 코드 재사용을 향상 시키기 위해 무한 루프-중간에서 끝내기

    • 코드 반복은 없앰
    • while루프를 맹목적인 무한루프로 만들기에 while 루프 유용성 감소
    • break에 의존
bottles = []
while True: #무한 루프
    fresh_fruit = pick_fruit()
    it not fresh_fruit: #중간에서 끝내기
        break
    for fruit, count in fresh_fruit.items():
        batch = make_juice(fruit, count)
        bottles.extend(batch)
  • fresh_fruit변수 대입하여 조건 검사

    • 무한 루프 중간에서 끝내기 관용어의 필요성이 줄어든다
    • 대입식을 도입하여 가독성 향상
bottles = []
while fresh_fruit := pick_fruit():
    for fruit, count in fresh_fruit.items():
        batch = make_juice(fruit, count)
        bottles.extend(batch)
        

정리

  • 대입식에서 왈러스 연산자(:=) 사용해서 하나의 식 안에서 변수 이름에 값을 대입하면, 이 값을 평가하고 중복을 줄일 수 있다.

  • 대입식이 더 큰 식의 일부분으로 쓰일 때는 괄호로 둘러싸야 한다.

  • 파이썬에선 switch/case문이나 do/while루프를 쓸 순 없지만, 대입식을 사용하면 더 깔끔하게 흉내 가능합니다.

profile
성장을 도울 아카이빙 블로그

0개의 댓글