키워드인자 사용 전
#숫자를 나눌 때, 특별한 경우
#ZeroDivisionError: 예외 무시 후 무한대 반환
#OverflowError: 예외를 무시 후 0반환
"""
어떤 예외를 무시하고 결정하는 두 불 변수의 위치가 혼동되기 쉬워서 버그 추적이 어려워진다
"""
def safe_division(number, divisor,
ignore_overflow,
ignore_zero_division):
try:
return number / divisor
except OverflowError:
if ignore_overflow:
return 0
else:
raise
except ZeroDivisionError:
if ignore_zero_division:
return float('inf')
else:
raise
키워드인자 사용 후
"""
버그 추적이 쉬워지고 코드의 가독성 향상
모든 예외를 다시 던진다
키워드 인자를 사용하면 무시할 예외를 정하는 플래그 설정
"""
def safe_division_b(number, divisor,
ignore_overflow =False,
ignore_zero_divison=False)
복잡한 함수 속 키워드 인자 사용
호출자가 키워드만 사용하는 인자를 통해 의도 명목화
키워드만 사용하는 인자는 반드시 사용지정
절대위치를 기반으로 지정 안됨
"""
ndigits는 위치나 키워드를 사용해서 전달할 수 있는 선택적 파라미터
* : 키워드로만 지정해야하는 인자 목록에 위치
/: 위치로만 지정해야하는 인자 앞에 위치
/와 * 사이에 파라미터 키워드를 사용해서 전달 혹은 위치 기반으로 전달
"""
def safe_division_e(numerator, denominator, /,
ndigits=10,*,
ignore_overflow =False,
ignore_zero_divison=False):
try:
fraction = numerator / denominator
return round(fraction, ndigits)
except OverflowError:
if ignore_overflow:
return 0
else:
raise
except ZeroDivisionError:
if ignore_zero_division:
return float('inf')
else:
raise