시작하기무료로 시작하기

함수에 태그 달기

무언가에 태그를 단다는 것은, 그 항목에 하나 이상의 문자열 레이블을 붙인다는 뜻이에요. 예를 들어, 나중에 검색할 수 있도록 이메일이나 사진에 태그를 달곤 하죠. 여러분은 함수에 임의의 태그 목록을 달 수 있게 해 주는 데코레이터를 만들기로 했어요. 이 태그는 여러 용도로 활용할 수 있어요:

  • 함수에 누가 작업했는지 정보를 추가해, 사용자가 문제가 생겼을 때 누구에게 물어봐야 할지 찾을 수 있게 하기.
  • 함수를 "experimental"로 라벨링해, 향후 입력과 출력이 바뀔 수 있음을 사용자에게 알리기.
  • 앞으로의 버전에서 제거할 계획이 있는 함수를 표시하기.
  • 그 밖에도 다양하게 활용할 수 있어요.

이 연습은 강의의 일부입니다

Python으로 함수 작성하기

강의 보기

연습 안내

  • 반환할 새로운 데코레이터 decorator()를 정의하세요.
  • 데코레이션된 함수의 메타데이터가 유지되도록 하세요.
  • 데코레이션 대상 함수를 호출하고 그 결과를 반환하세요.
  • 새 데코레이터를 반환하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

def tag(*tags):
  # Define a new decorator, named "decorator", to return
  def ____(____):
    # Ensure the decorated function keeps its metadata
    @____(____)
    def wrapper(*args, **kwargs):
      # Call the function being decorated and return the result
      return ____(____, ____)
    wrapper.tags = tags
    return wrapper
  # Return the new decorator
  return ____

@tag('test', 'this is a tag')
def foo():
  pass

print(foo.tags)
코드 편집 및 실행