작성
·
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