[python]왈러스연잔자(대입식)을 사용해 가독성 높이기

Oni·2023년 10월 9일
0

python

목록 보기
3/5

기존 변수에 값을 할당 후 이 값을 조건문 등에 활용하려고 할 때
동일한 변수명을 계속 언급하면 가독성이 떨어진다.
왈러스 연산자(:=)라는 대입식을 통해 파이썬 코드의 가독성을 높여보자.

과일로 음료를 만드는 간단한 예제로 익혀보자
레몬의 갯수로 만들 수 있는 레모네이드의 수를 count변수에 담아 구하는 간단한 예제다.


count변수가 if문에서만 활용된다는 것을 한눈에 이해할 수 있다.
대입연산자는 1. count변수에 값 대입, 2. 판단의 순서로 동작한다.


ex2) if/elif/else문에서의 활용


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 = '아무것도 없음'

ex3) while루프에서의 활용


import random

def pick_fruit():
    if random.randint(1,10) > 2:   # 80% 확률로 새 과일 보충
        return {
            '사과': random.randint(0,10),
            '바나나': random.randint(0,10),
            '레몬': random.randint(0,10),
        }
    else:
        return None

def make_juice(fruit, count):
    if fruit == '사과':
        return [('사과주스', count/4)]
    elif fruit == '바나나':
        return [('바나나스무디',count/2)]
    elif fruit == '레몬':
        return [('레모네이드',count/1)]
    else:
        return []


# before : 루프 흐름 제어가 break문에 달려 있음 
bottles = []
while True: # 무한루프
    fresh_fruit = pick_fruit()
    if not fresh_fruit: # 중간에서 끝내기
        break

    for fruit, count in fresh_fruit.items():
        batch = make_juice(fruit, count)
        bottles.extend(batch)

print(bottles)
# after : while 루프에서 fresh_fruit변수에 대입 후 조건을 확인하므로 코드의 가독성이 높아짐 
bottles = []
while fresh_fruit := pick_fruit():
    for fruit, count in fresh_fruit.items():
        batch = make_juice(fruit, count)
        bottles.extend(batch)

print(bottles)

Reference

  • 파이썬 코딩의 기술(길벗)
profile
데이터 분석/엔지니어링/ML에 관한 기록

0개의 댓글