기존 변수에 값을 할당 후 이 값을 조건문 등에 활용하려고 할 때
동일한 변수명을 계속 언급하면 가독성이 떨어진다.
왈러스 연산자(:=)라는 대입식을 통해 파이썬 코드의 가독성을 높여보자.
과일로 음료를 만드는 간단한 예제로 익혀보자
레몬의 갯수로 만들 수 있는 레모네이드의 수를 count변수에 담아 구하는 간단한 예제다.
count변수가 if문에서만 활용된다는 것을 한눈에 이해할 수 있다.
대입연산자는 1. count변수에 값 대입, 2. 판단의 순서로 동작한다.
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 = '아무것도 없음'
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)