Inflearn コミュニティ Q&A
higher order function 에서
作成
·
343
1

128줄에 return inside에서 inside()를 안하는 이유가 궁금합니다
@higher_order_example 자체가 inside 리턴받은 함수를 자동으로 ()붙여서 실행해주는 것인가요?
136줄에 sample_example()을 안쓰면 121줄에 있는 func 매개변수로 못넣는것인가요???
回答 2
1
Decorator는 외부 함수를 받아 기능을 추가한 새로운 내부 함수를 리턴하는 구조(디자인 패턴)이고,
@higher_order_example 문법은
sample_example = higher_order_example(sample_example)
를 간략히 대체하는 것으로 보면 될까요?
1
안녕하세요 남기정님
128줄에 return inside에서 inside()를 안하는 이유가 궁금합니다@higher_order_example 자체가 inside 리턴받은 함수를 자동으로 ()붙여서 실행해주는 것인가요?
=> 간단한 대답은 네 그렇습니다. () 표시가 함수를 실행시킨다고 생각하시면 될 듯합니다.
136줄에 sample_example()을 안쓰면 121줄에 있는 func 매개변수로 못넣는것인가요???
=> 121줄에 있는 func는, 131줄에 있는 decorator가 자동으로 132 ~ 133를 데리고 간것으로 치환한다고 생각하시면 될 듯합니다.
=> 136줄은 sample_example 함수를 실행시키는 겁니다.
근데 131줄 데코레이터 자체가 higher_order_example()을 하는것인데 왜 136줄에 sample_example()을 실행시키지 않으면 higher_order_example()이 실행 안되나요?
안녕하세요 남기정님,
131줄은 () 가 없습니다. 제가 말씀드린대로 함수를 실행하기위해서는 ()를 넣으셔야 실행이 됩니다. 즉, 자체적으로 실행을 하지 않기 때문에, Decorator(장식어)라고 불립니다.





네 맞습니다.
@decorator는 문법 설탕(syntax sugar) 이고 "기존 함수를 데코레이터 함수로 한 번 감싸서 다시 할당한다" 라고 이해하면 됩니다.