Re: 42.8데코레이션 심사문제
, 도장_ 관리자님이 작성반환값이 없는 데코레이터이기 때문에 UNIT 42.1.1의 예제를 이용하면 됩니다.
r = func()
return r
을 사용하는 것은 반환값이 있는 데코레이터일 때 입니다.
문제에서는 데코레이터 안에서 매개변수는 받지만, 반환값은 없습니다.
UNIT 42.1.1 예제는 매개변수를 받지 않는데, 이 예제를 매개변수를 받는 wrapper 함수를 사용하면 됩니다.
심사문제 해설을 보면
즉, '<{0}>{1}</{0}>'.format(tag_name, func())과 같이 문자열 서식을 사용하거나 +를 사용하여 '<', '>', '/', tag_name, func()를 조합해주면 됩니다.
즉,
print('<{0}><{2}>{1}</{2}></{0}>'.format(tag_name,r,tag_name),end=' ')
문의한 코드처럼 이렇게 접근하면 안 됩니다.
return '<{0}>{1}</{0}>'.format(tag_name, func())
이렇게 작성하라는 겁니다. 정답 코드입니다. 심사문제 해설을 벗어나서 동작하는 코드를 제출할 수는 있겠지만, 매우 어려워질 겁니다. 일반적인 코드가 아니라는 뜻이니까요.데코레이터를 전체적으로 복습하고, 유형별로 나눠서 이해하세요.
데코레이터는 고급 기능이라 이해가 어렵습니다.