fresh_fruit = {
    '사과': 10,
    '바나나': 8,
    '레몬': 5,
}
 
def make_lemonade(count):
	pass
 
def out_of_stock():
	pass
 
# count 변수가 if문에서만 쓰이기 떄문에 대입식(왈러스 연산자)를 통해 if문 줄에 보이게
if count := fresh_fruit.get('레몬', 0):
	make_lemonade(count)
else:
	out_of_stock()
 
 
# 아래 방법은 count 변수가 더 이상 강조되지 않는다
pieces = 0
if (count := fresh_fruit.get('바나나', 0)) >= 2:
    pieces = slice_bananas(count)
 
try:
    smoothies = make_smoothies(pieces)
except OutOfBananas:
    out_of_stock()
 
 
# 대입식을 사용하면 네스팅 없이 깔끔하게 switch/case문과 같이 만들수 있다
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 = '아무것도 없음'
 
 
 
 
bottles = []
while True: # 무한루프의 제어가 break문에 책임이 있어 잘못하면 평생 나오지 못한다
    fresh_fruit = pick_fruit()
    if not fresh_fruit: # 중간에서 끝내기
        break
 
    for fruit, count in fresh_fruit.items():
        batch = make_juice(fruit, count)
        bottles.extend(batch)
 
# 대입식을 이용하면 루프 제어에 용이하다
bottles = []
while fresh_fruit := pick_fruit():
    for fruit, count in fresh_fruit.items():
        batch = make_juice(fruit, count)
        bottles.extend(batch)
 

참고자료 :