01. if문을 없애는방식으로 코딩하기
코드를 작성하다보면 if문이 많아져서 복잡해지는 문제를 해결해보자.
아래의 영상을 참고하여 Javascript 로 짜여진 코드를 Python으로 다시 작성하였습니다.
코드를 작성하다보면 아래와 같이 코드를 짜는 경우가 생기는데,
# 기존 방식
def execute_payment(payment_type: str) -> str:
if payment_type == 'KAKAO_PAYMENT':
return '카카오 결제 처리'
if payment_type == 'NAVER_PAYMENT':
return '네이버 결제 처리'
if payment_type == 'COUPANG_PAYMENT':
return '쿠팡 결제 처리'
if payment_type == 'PAYCO_PAYMENT':
return '페이코 결제 처리'
if payment_type == 'APPLE_PAYMENT':
return '애플 결제 처리'
이렇게 로직에 if문으로 처리를 하게되면, 나중에 결제 방식이 늘어날때마다 아래에 계속 추가가되어 가독성에 좋지않다.
이러한 코드를 아래처럼 바꾸게 되면 훨씬 코드가 간결해지는 효과를 볼 수 있다.
# 개선 방식
payment_map = {
'KAKAO_PAYMENT': '카카오 결제 처리',
'NAVER_PAYMENT': '네이버 결제 처리',
'COUPANG_PAYMENT': '쿠팡 결제 처리',
'PAYCO_PAYMENT': '페이코 결제 처리',
'APPLE_PAYMENT': '애플 결제 처리',
}
def execute_payment(payment_type: str) -> str:
return payment_map[payment_type]
result = execute_payment('KAKAO_PAYMENT')
print(result)
02. 함수 자체를 저장시켜 호출하기
위에 방법을 조금 더 응용한 결과이다.
python 에서의 함수는 1급함수라는 특징이 있기 때문에 함수자체 또한 객체이므로 딕셔너리 value에 매핑시킬 수 있다.
def pay_on_kakao():
print('kakao pay 처리중...1')
print('kakao pay 처리중...2')
def pay_on_naver():
print('naver pay 처리중...')
def pay_on_coupang():
print('coupang pay 처리중...')
def pay_on_payco():
print('payco pay 처리중...')
def send_log():
return
# 함수 자체를 넣어야 한다. () 호출해서 넣으면 메모리에 올라갈때 값 고정됨
payment_map = {
'KAKAO_PAYMENT': pay_on_kakao,
'NAVER_PAYMENT': pay_on_naver,
'COUPANG_PAYMENT': pay_on_coupang,
'PAYCO_PAYMENT': pay_on_payco,
}
def execute_payment(payment_type: str) -> str:
payment_map[payment_type]() # () 호출해주는것을 잊지말자.
execute_payment('KAKAO_PAYMENT')
execute_payment('NAVER_PAYMENT')
댓글남기기