더북(TheBook)

BETTER WAY 4
복잡한 표현식 대신 헬퍼 함수를 작성하자

 

 

파이썬의 간결한 문법을 이용하면 많은 로직을 표현식 한 줄로 쉽게 작성할 수 있다. 예를 들어 URL에서 쿼리 문자열을 디코드해야 한다고 하자. 다음 예에서 각 쿼리 문자열 파라미터는 정수 값을 표현한다.*

from urllib.parse import parse_qs

my_values = parse_qs(‘red=5&blue=0&green=’, keep_blank_values=True)

print(repr(my_values))

 

>>>

{‘red’: [‘5’], ‘green’: [‘’], ‘blue’: [‘0’]}

 

쿼리 문자열 파라미터에 따라 값이 여러 개 있을 수도 있고 값이 한 개만 있을 수도 있으며, 파라미터는 존재하지만 값이 비어 있을 수 있고, 파라미터가 아예 빠진 경우도 있다. 결과 딕셔너리에 get 메서드를 사용하면 각 상황에 따라 다른 값을 반환할 것이다.

print('Red:     ', my_values.get(‘red’))

print('Green:   ', my_values.get(‘green’))

print(‘Opacity: ‘, my_values.get(‘opacity’))

 

>>>

Red:     [‘5’]

Green:   [‘‘]

Opacity: None

 

파라미터가 없거나 비어 있으면 기본값으로 0을 할당하게 하면 좋을 것이다. 이 로직에 if 문이나 헬퍼 함수를 쓸 필요까지는 없다고 느끼고, 작업을 불(boolean) 표현식으로 처리하는 방법을 선택할 수도 있다.

 


* 역주 파이썬 2에서는 urllib.parse 대신 urlparse 모듈을 쓰면 된다.

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