inflearn logo
강의

講義

知識共有

Djangoの設計哲学から始めるPython Django入門

Python文法を覗く

클로저 관련 질문

404

kimlink

投稿した質問数 2

0

안녕하세요

클로저 부분 설명이 이해가 가지 않아 질문드립니다!
위 코드에서

base_number가 10인것은 이해가 갑니다만,

함수안에서 number에 대한 변수 선언이 없고,

return_fn이 선언될때도 number에 대한 지정하는 부분이 없는데

return_fn(3)에서 number가 3이라는 것을 어떻게 아는것인지 궁금합니다.

 

django python

回答 2

1

kimlink

code.png답변 감사합니다!
예제 코드로 이리저리 테스트 해보았습니다.
강사님 코멘트 처럼 처음 인자가 넘어가는 것은 return_fn함수가 호출될때 넘어가고, 넘겨 받는 경우는 make_double함수의 return 값에 들어있는 함수(사진상 new_fn2)가 받게 되는것을 확인 했습니다.
추가적으로 인자를 넘기는 시점에서 파이썬에서 확인하고 인자의 수가 맞지 않으면 오류를 발생시킵니다.
그리고 인자에 대해 따로 인자 이름을 지정하지 않으면 순서대로 들어가고 이름을 지정하면 이름에 맞게 들어가는것 까지 확인 했습니다.
친절한 답변 감사합니다.

0

pyhub

잘 해결하셨습니다.

화이팅입니다. ;-)

1

pyhub

안녕하세요.

make_double 함수 내에서
new_fn1 함수가 make_double 함수가 호출될 때마다 새롭게 생성이 되며,
new_fn2 함수 역시 make_double 함수가 호출될 대마다 새롭게 생성이 됩니다.
number는 new_fn1 함수와 new_fn2 함수의 인자입니다.

def new_fn2(number):
...

그래서, 위 함수 정의가 있다면 new_fn2(3) 처럼 호출이 될 때 인자 3이 number에 대입이 되어 new_fn2 함수가 수행됩니다.

return_fn(3) 코드는 return_fn 함수를 호출할 때 인자 3을 넘긴 것입니다.

인자는 return_fn 함수를 호출할 때 지정하기 나름입니다.
return_fn(3) 처럼 인자 3으로 호출하면 10 + 3 ** 2가 계산이 되어 19를 반환하는 것이고
return_fn(5) 처럼 인자 5로 호출하면 10 + 5 ** 2가 계산이 되어 25를 반환합니다.

차근차근 살펴보시고 또 질문남겨주세요.

화이팅입니다. :-)

pycharm 리딤코드

0

65

2

pycharm 프로 에디션

0

163

2

메일 전송하는 부분은 어떨때 쓰는건가요?

0

88

1

'venv' 같은 이름의 가상환경 만들지마세요

0

264

1

get_object_or_404로 바꾼 후 계속 오류가 나옵니다

0

121

2

[Django 5 버전 - 해결 방법] Method Not Allowed (GET)

0

289

1

개발환경 구축 관련하여 질문드립니다.

1

224

1

PyCharm Professional

0

258

1

accounts/url 질의

0

235

2

render 관련

0

230

1

추가질문 환경세팅)

0

345

3

장고프로젝트 생성시

0

255

2

도커 설치관련

0

234

1

환경세팅 질문드려요

0

234

1

smtp 발송에서

0

277

2

주소가 app/app/1로 나와요

0

200

1

주소가 app/app/1로 나옵니다

0

250

2

CreateView에 html 코드가 어떻게 적용되는 걸까요?

0

372

1

#장고 철학5 모델 설계 질문 드립니다.

0

208

1

URL 매핑 관련해서 질문드립니다.

0

272

1

Http Method 관련 질문입니다.

0

166

1

벌레모양 디버그랑 런이란 무슨 차이가 있나요?

0

496

1

파이참 프로 에디션

0

209

1

sql

0

350

1