- [BW 5] 복잡한 식을 쓰는 대신 도우미 함수를 작성하라2024년 10월 22일
- 31514
- 작성자
- 2024.10.22.:00
파이썬은 문법이 간결하므로 상당한 로직이 들어가는 식도 한 줄로 작성할 수 있다.
다음과 같은 질의 문자열이 있다고 가정해보자.
from urllib.parse import parse_qs var = parse_qs('빨강=5&파랑=0&초록=', keep_blank_values=True) print(repr(var)) >>> {'빨강': ['5'], '파랑': ['0'], '초록': ['']}
파라미터가 없거나 비어 있을 경우 0이 디폴트 값으로 대입되게 하려면 어떻게 해야할까?
다음과 같이 if 문이 아닌, if 식을 사용할 수 있다.
red = var.get('빨강', [''])[0] or 0 green = var.get('초록', [''])[0] or 0 outer = var.get('수달', [''])[0] or 0 print(f'빨강: {red!r}') print(f'초록: {green!r}') print(f'수달: {outer!r}') >>> 빨강: '5' 초록: 0 수달: 0
하지만 이런 코드는 다른 사람이 이해하기 위해 많은 시간을 투자해야 한다.
이번에는 if/else 조건식을 사용해 코드를 조금 더 읽기 쉽게 만들어보자.
red_str = var.get('빨강', ['']) red = int(red_str[0]) if red_str[0] else 0 print(red) >>> 5
다음은 if/else 문을 사용해보자.
green_str = var.get('초록', ['']) if green_str[0]: green = int(green_str[0]) else: green = 0 print(green) >>> 0
모든 로직을 분리한 다음 코드를 살펴보면, 이전 버전이 더 복잡해 보인다.
따라서 우리는 같은 로직을 단지 두세 번을 사용할지라도 꼭 도우미 함수를 작성해야 한다.
# 도우미 함수 def get_first_int(value, key, default=0): found = value.get(key, ['']) if found[0]: return int(found[0]) else: return default outer = get_first_int(var, '수달') print(outer) >>> 0
식이 복잡해지기 시작하면 바로 식을 더 작은 조각으로 나눠서 로직을 도우미 함수로 옮길지 고려해야 한다.
코드를 줄여 쓰는 것보다 가독성을 좋게 하는 것이 더 가치 있다.
'Book > 파이썬 코딩의 기술' 카테고리의 다른 글
[BW 8] 여러 이터레이터에 대해 나란히 루프를 수행하려면 zip을 사용하라 (0) 2024.10.22 [BW 7] range보다는 enumerate를 사용하라 (3) 2024.10.22 [BW 6] 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹하라 (0) 2024.10.22 [BW 4] f-문자열을 통한 인터폴레이션 (2) 2024.10.22 [BW 2] PEP 8 스타일 가이드를 따르라 (0) 2024.10.22 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)