인프런 커뮤니티 질문&답변

가후님의 프로필 이미지
가후

작성한 질문수

가장 빠른 풀스택: 파이썬 백엔드와 웹기술 부트캠프 (flask/플라스크와 백엔드 기본) [풀스택 Part1-1]

flask 깊은 이해를 위한 파이썬 중급 문법: first class function

중첩함수 인자값 관련 이해못하는 부분이 있어서 문의 드려요

작성

·

255

2

flask 깊은 이해를 위한 파이썬 중급 문법: first class function

강의의 10분 21초 내용 입니다.

def html_creator(tag):

    def text_wrapper(msg):

        print('<{0}>{1}</{0}>'.format(tag, msg))

    return text_wrapper

이렇게 함수를 만들고

h1_html_creator = html_creator('h1')

html_creator 에 인자값을 h1을 넣으면

tag 인수에 h1이 할당이 되고나서

h1_html_creator('Hi 태그는 타이틀을 표시하는 태그입니다')

이렇게 인자 값을 넣으면

def text_wrapper(msg)

여기 함수 msg

인자값이 할당이 된다고 영상에 설명되어있습니다.

왜 msg에 인자값이 할당이 되는지 이해를 못하겠습니다...

중첩함수이고, 

def html_creator(tag)  여기 함수에 인자값이 할당이 되어있으니

추가로 인자값을 넣으면 

다음 함수인

def text_wrapper(msg)

여기에 인자값이 들어간다고 이해 하면되나요?

답변 3

2

안녕하세요.

제가 문의를 잘 이해한 것인지 잘 모르겠는데요. 복잡한 내용이라서 ㅎㅎ

-------------

def html_creator(tag):

    def text_wrapper(msg):

        print ('<{0}>{1}</{0}>'.format(tag, msg))

    return text_wrapper

h1_html_creator = html_creator('h1') #1

-------------

위와 같이 작성하면, html_creator() 에 h1 이 들어간 text_wrapper() 함수가 리턴이 됩니다. 즉 다음과 같은 코드가 h1_html_creator  변수에 리턴이 됩니다.

--------

    def text_wrapper(msg):

        print ('<{0}>{1}</{0}>'.format('h1', msg))

--------

따라서, h1_html_creator('내용') 와 같이 내용을 넣게 되면, 결과적으로는 다음과 같이 넣어지는 셈이라서,

--------

    def text_wrapper('내용'):

        print ('<{0}>{1}</{0}>'.format('h1', '내용'))

--------

출력 결과는 다음과 같이 진행이 됩니다.

<h1>내용</h1>

이렇게 이해안가시는 부분들은 시각적으로 써보시면, 훨씬 이해하는데 도움이 되지 않을까 생각합니다.

감사합니다.




1

저도 이 부분이 이해가 안됐는데 (그냥 저렇게 되는구나 라고 생각만 함..) 아마 비슷한 곳에서 어렵게 느끼나봐요 ㅎㅎ 그래도 이렇게 설명이 있으니까 잘 이해됐어요. 

그런데 h1_html_creator =  html_creator('h1') 이 코드에서 h1_html_creator는 변수인데 함수를 할당하고 나서는 마치 함수처럼 h1_html_creator('내용') 작동 하는 것 같은데 맞나요? 

1

가후님의 프로필 이미지
가후
질문자

쉽게 알려주셔서 감사합니다! 이해되었습니다!

가후님의 프로필 이미지
가후

작성한 질문수

질문하기