함수 호출 시간 포함 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