• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

도전과제 질문

22.03.26 15:07 작성 조회수 138

0

안녕하세요 좋은 강의 감사드립니다. 

강의 마지막 도전과제를 아래와같이 짜보았는데요. 

inner_wrapper 내 print문에서 .format을 이용하여 출력 한 뒤, inner_wrapper을 리턴하도록 짜보았습니다. 

print('<{0}>' + function(*args, **kwargs) + '</{0}>' .format(tag))

출력 결과를 보니,  앞 tag를 받아오지 못하고 그대로 출력되더라구요!

'<{0}>'안에 있는 {0}을 그대로 문자로 인식해서 출력된 것인가요~?

그렇다면, 왜 '{/0}'은 tag 변수를 받아와서 입력한 html  태그가 출력되는 것인지 궁금합니다. 

추가로 print문 내에서 .format 함수를 사용하여 출력하려면 어떤식으로 수정되어야 하는지 궁금합니다.

다른 간단한 예제들을 찾아봤을 때, .format(변수)로 바로 받아올 수 있는걸 확인했는데, 제가 어떤 부분을 놓치고 있는건지 모르겠어요.

또, 출력 결과 None이 출력되는데 이 이유도 궁금합니다

 

답변 1

답변을 작성해보세요.

0

안녕하세요.

본래 제시한 코드는 다음과 같은데요. format 이 마지막 '</{0}}>' 에만 붙어 있기 때문에, 해당 부분만 format 처리가 된 것으로 이해가 됩니다.

 

def mark_html(tag):

    def outer_wrapper(function):

        def inner_wrapper(*args, **kwargs):

            return '<' + tag + '>' + function(*args, **kwargs) + '</' + tag + '>'

        return inner_wrapper

    return outer_wrapper

 

추가로 None 은 print_title() 함수가 return 값이 없기 때문에, 이를 None 으로 출력한 것이고, 그 위에 출력된 것은 print_title() 함수 내에서 출력한 것이라고 보시면 좋을 것 같습니다.

 

감사합니다.