시작하기무료로 시작하기

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 ____
코드 편집 및 실행