더북(TheBook)

파라미터가 없거나 비어 있을 경우 0이 디폴트 값으로 대입되면 좋을 것이다. 이런 로직을 처리하기 위해 완전한 if(statement)을 쓰거나 도우미 함수를 작성하는 것은 그다지 매력이 없으므로 if(expression)을 사용하면 좋을 것이다.

이러한 선택을 파이썬 문법은 너무나 쉽게 지원한다. 다음 코드는 빈 문자열, 빈 list, 0이 모두 암시적으로 False로 평가된다는 사실을 이용한 것이다. 다음 각 식은 왼쪽의 하위 식이 False인 경우 모두 or 연산자 오른쪽의 하위 식 값으로 계산된다.

# 질의 문자열이 '빨강=5&파랑=0&초록='인 경우
red = my_values.get('빨강', [''])[0] or 0
green = my_values.get('초록', [''])[0] or 0
opacity = my_values.get('투명도', [''])[0] or 0
print(f'빨강: {red!r}')
print(f'초록: {green!r}')
print(f'투명도: {opacity!r}')

>>>
빨강: '5'
초록: 0
투명도: 0

‘빨강’인 경우 my_values 딕셔너리 안에 키가 있기 때문에 작동한다. 키에 해당하는 값은 '5'라는 문자열이 유일한 원소로 들어 있는 list다. 이 '5'라는 문자열은 True로 평가되고, 그에 따라 red에는 or 식의 첫 번째 부분이 대입된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.