HTML 생성기
웹페이지의 HTML을 즉석에서 생성하는 스크립트를 작성하고 있어요. 지금까지 문자열을 반환하는 어떤 함수에도 굵게(bold) 또는 기울임(italics) 태그를 추가하는 두 개의 데코레이터를 만들었습니다. 그런데 이 두 데코레이터가 매우 비슷해 보인다는 것을 눈치챘어요. 비슷한 데코레이터를 잔뜩 만드는 대신, 열기/닫기 태그 한 쌍을 받아서 적용할 수 있는 하나의 데코레이터 html()을 만들고자 합니다.
def bold(func):
@wraps(func)
def wrapper(*args, **kwargs):
msg = func(*args, **kwargs)
return '<b>{}</b>'.format(msg)
return wrapper
def italics(func):
@wraps(func)
def wrapper(*args, **kwargs):
msg = func(*args, **kwargs)
return '<i>{}</i>'.format(msg)
return wrapper
이 연습은 강의의 일부입니다
Python으로 함수 작성하기
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
def html(open_tag, close_tag):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
msg = func(*args, **kwargs)
return '{}{}{}'.format(open_tag, msg, close_tag)
# Return the decorated function
return ____
# Return the decorator
return ____