내부함수를 반환하는 클로저 형태.
외부함수의 매개변수는 함수객체 하나만.
내부함수의 매개변수는 꾸며진 함수와 같은 구성이거나 가변매개변수로 설정.
내부함수에서 프리변수인 꾸며진 함수를 호출.
trace는 데코레이터 함수, foo는 꾸며지는 함수라 하자.
함수 trace(foo())를 호출하거나, @trace를 foo의 선언 위에 작성하고 foo()처럼 호출.
<예시 코드>
def uppercase(obj):
def wrapper():
modi_result = obj().upper()
return modi_result
return wrapper
@uppercase
def hi():
return f'Long time no see'
if __name__ == '__main__':
print(hi())
[참고]
hi 함수를 @uppercase로 꾸미는 것은
hi 함수 호출문 위에 hi = uppercase(hi)를 삽입하여
hi라는 이름에 할당된 함수객체를 변경하는 것과 같다.