인프런 커뮤니티 질문&답변
도전과제 질문
작성
·
235
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() 함수 내에서 출력한 것이라고 보시면 좋을 것 같습니다.
감사합니다.




