inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]

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

return을 하게되면 함수가 stack에서 사라지는 걸로 알고 있습니다.

179

JunHo KANG

작성한 질문수 5

1

안녕하세요 ! 크롤링 강의 이후에 웹 개발을 하고 싶어서 수강신청을 하게 됐습니다! 자바를 베이스로하고 있다가 파이썬의  신선한 공기를 마시며 왔다 갔다하며 재밌게 공부하고 있습니다 ! 

좋은 강의 감사드린다는 말씀 먼저 드리며 질문 시작하겠습니다 !

9:43초에 해당하는 내용입니다.

fn = outer_function(10)에서 outer_function함수에 인자값으로 10을 줬습니다. 그러면 num에 10이 전달된 것까지 이해했습니다.

결과값을 봤을 때 첫번째 호출에서 입력한 10이 print(num)에도 들어간 것처럼 보여지는데요, inner_func()함수를 호출해주지 않았는데 어떻게 그 안에 값이 들어가는지 이해가 안되네요 ㅠㅠ

그냥 들어가나보다..하기엔 조금 찝찝해서요 !

그리고,

outer_func(10)의 결과값으로 inner_func함수를 리턴해서 fn변수에 저장했습니다.

이때, outer_func(num) 함수가 리턴에 의해서 종료가 되면, 안에 남아있던 num(10)값이나, outer_func(num)메서드도 스텍에서 사라지는 걸로 알고있는데, print(fn())을 실행했을 때 어떻게 10이라는 값이 출력되는지 의아합니다...

python rest-api flask

답변 1

0

잔재미코딩 DaveLee

ㅎㅎ 신선한 공기 ㅎㅎ

outer_func(10) 을 호출해주면, 결과적으로 다음과 같은 코드로 해당 함수가 선언이 되고,

   def inner_func():

         print(10)

         return 'complex'

해당 코드로 선언된 inner_func() 객체가 리턴된다고 보시면 좋을 것 같습니다.

그냥 변수로 넣은 값이 inner_func() 안에 값으로 변환되어 선언된다고 보시면 좋을 것 같습니다.

그 객체를 fn 변수가 가지고 있다가, 호출하면, 그대로 위의 10이 출력이 되는 것으로 이해하시면 좋을 것 같습니다.

함수는 보통 함수 호출이 끝나면, 내부 지역변수를 없어지는 것은 맞습니다.

그러나, 실제로 파이썬의 함수는 함수가 아니라 객체입니다. 그래서 객체 자체가 사라지지 않는 이상, 객체 내부의 attribute 는 사라지지 않습니다. 제가 유사한 답변을 이전에도 한 것 같아서, 그 부분도 찾아보셔도 좋고요.

마지막으로 다음 '궁금한 점에 대한 답변 찾기 꿀팁' 글도 읽어보시면, 훨씬 도움이 되실 것 같습니다.
궁금한 점에 대한 답변 찾기 꿀팁
질문하시기 전에, 다음 내용을 확인해주시면 훨씬 도움이 되실꺼예요.
첫번째, 질문 전 검색은 필수! google.co.kr 에서 질문에 대해 검색해보세요!
에러 메시지는 맨 마지막 라인을 복사해서 구글에서 검색해보시고, 질문에 대해서는 질문 관련 키워드들을 조합해서 구글에서 검색해보세요.
개발자들은 모두 이를 통해, 답변을 얻습니다. 한발짝 나아 가시려면, 반드시 이런 연습이 꼭 필요합니다.
사실 검색 없이 질문을 통해, 바로 답을 얻는 부분은 장기적으로는 큰 의미가 없어요. 궁극적으로는 프로그래밍은 답을 찾는 연습을 하셔야 합니다.
저는 한가지 확인이 필요한 사안을 위해, 20 ~ 30분 검색과 10개 이상의 블로그를 찾아보는 일을 하루에도 한두번씩 한답니다.
검색이 처음이신 분들은 개발자를 위한 정보 검색 팁을 참고하시면 훨씬 성장하시는데 도움이 되실 것입니다.
두번째, 각 강의마다, 다른 분들께서도 이미 질문하신 사항들이 있습니다.
해당 부분을 확인해보시면, 답변을 기다릴 필요 없어서, 훨씬 도움이 되실 것 같습니다.
세번째, 각자 작성하신 코드 에러의 경우는
제가 제공해드린 코드자료를 수정하지 않고, 단계별로 그대로 실행해보신 후, 해당 코드와 자신의 코드가 어떤 부분이 다른지를 단계별로 확인해보시면, 훨씬 좋습니다.
키보드로 그대로 따라 치시기 보다, 제공해드린 코드를 그대로 복사해서 붙여넣고 테스트를 해보시면 좋고, 여기에서 자신의 코드와 다른 부분을 최대한 작게 쪼개서 조금씩 넣어보시면서, 테스트를 해보시면 가장 좋습니다. 각자 코드를 작성하신다면, 이렇게 작업해보시면 훨씬 도움이 되실꺼예요.
마지막으로, 질문하실 경우에는 어느 강의 영상의 어느 구간(가능하다면 몇분 몇초)에 대해 질문하시는 것인지 꼭 명기해주시면 좋습니다.
그래야 맥락이 이해가 가서, 보다 좋은 답변할 수 있습니다. 만약 구간 명기가 가능하지 않다면, 강의 영상 외적인 문의인지에 대해 확인 부탁드립니다. 본 질문 답변란은 강의 영상 이해를 돕기 위한 자리입니다. 강의 영상 외적인 부분은 양해를 부탁드립니다. 특히 극히 일부 개인별 코드 리뷰나 기능 구현등 무리가 되는 요청을 하시는 분들도 계셨는데, 좋은 강의가 선순환될 수 있도록 부탁드립니다.
잔재미코딩 Dave Lee 드림

감사합니다.

강의 자료 어디서 다운받나요? 없는데요..

0

150

1

강의 영상은 안나오고 소리만 나옵니다.

0

177

1

섹션 6 인증 failed 질문

0

153

1

섹션 8 flask 다양한 기능: 다양한 데코레이터 before_first_request 문의

0

358

3

192.168.0.12:8085??

0

154

1

04_flask_ABTest에서 blog_abtest.py 실행 시 오류입니다.

0

170

1

수업내용 질문 건

0

186

1

brew로 mysql 설치 후 서버 실행할 때, 터미널에서 anaconda bin 참조하는 문제

0

662

2

crossorigin 프로퍼티에 대해서 질문드립니다.

0

288

1

강의자료 다운로드 문의드립니다.

1

267

1

갑자기 웹 서버 띄울때 이상하게 나옵니다

0

313

1

가장빠른 Vue와 flask, 그리고 REST API 1 강의 질문입니다. (2)

0

345

1

가장빠른 Vue와 flask, 그리고 REST API 1 강의 질문입니다.

0

321

2

Fast api 추가 강좌 개설여부 질문드립니다!.

0

316

2

flask_cors설치 오류

0

618

2

부스트랩 html 다운

0

257

1

혹시 강의자료 공유가 가능한가요?

0

354

1

소스코드는 어디에 있을까요??

1

254

1

안녕하세요 몇가지 질문이 있습니다.

0

339

1

동적함수생성 질문드립니다.

1

630

2

(강의명) flask 로 Rest API 구현과 테스트 실행 : 오류 문의

0

575

1

백엔드 데코레이터 2 강의에 도전 문제 질문드립니다

0

287

1

몽고 DB 공식홈페이지 403 접속 에러 발생합니다.

1

623

3

04._flask_ABTest Pycharm 에서 실행오류

0

486

1