디폴트인자

매일 공부(ML)·2022년 6월 15일
0

이어드림

목록 보기
76/146

None과 독스트링을 사용해서 동적인 디폴트인자 지정

함수 호출 시간 포함 with 독스트링

def log(message, when=None):
    """메시지와 타임스탬프를 로그에 남긴다.

    Args:
        message: 출력할 메시지
        when: 메시지가 발생한 시각(datetime),
        디폴트값은 현재 시간이다.
    """

    if when is None:
        when = datetime.now()
    print(f'{when}:{message}')

log('안녕!')# 2020-08-18 12:06:27.168446: 안녕!
sleep(0.1)
log('다시 안녕!') # 2020-08-18 12:06:27.274338: 다시 안녕!

보통 파이썬 사용은 디폴트 값으로 None지정 후 실제 동작을 독스트링에 문서화

def log(message, when=None):
    """메시지와 타임스탬프를 로그에 남긴다.

    Args:
        message:출력할 메시지.
        when: 메시지가 발생한 시각
            디폴트 값은 현재 시간이다.
    """
    if when is None:
        when = datetime.now()
    print(f{'when}:{message}')

log('안녕!')# 2020-08-18 12:06:27.168446: 안녕!
log('다시 안녕!') # 2020-08-18 12:06:27.274338: 다시 안녕!

인자가 가변적인 경우 디폴트값으로 None을 사용하는 것이 중요하다

  • 인코딩 값을 읽으려고 할 때 디코딩 실패 시 빈 딕셔너리 반환
import json

def decode(data, default={}):
    try:
        return json, loads(data)
    except ValueError:
        return default

한 쪽 딕셔너리만 변경이 되고 싶게 할 때

#해답은 함수에 있는 키워드 인자의 디폴트값으러 None으로 지정

def decode(data, default=None):
    """문자열로부터 Json 데이터를 읽어온다

    Args:
        data: 디코딩할 JSON데이터
        default: 디코딩 실패 시 반환할 값이다.
            디폴트 값은 빈 딕셔너리이다.
    """
    try:
        return json.loads(data)
    except ValueError:
        if default is None:
            default = {}
        return default
profile
성장을 도울 아카이빙 블로그

0개의 댓글