• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (106) N
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (24) N
      • 기타 (10)
        • 출퇴근 공부 간단 정리 (7)
      • ELK (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 31514의 이전 블로그는 여기로!
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • [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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바