Decorator 함수의 내부를 수정하지 않고 기능에 변화를 주고 싶을 때 사용한다 일반적으로 함수의 전처리나 후처리에 대한 필요가 있을때 사용을 한다 또한 데코레이터를 이용해, 반복을 줄이고 메소드나 함수의 책임을 확장한다 @ 으로 시작하는 것이 데코레이터들이다 def trace(func): # 호출할 함수를 매개변수로 받음 def wrapper(): print(func.__name__, '함수 시작') # __name__으로 함수 이름 출력 func() # 매개변수로 받은 함수를 호출 print(func.__name__, '함수 끝') return wrapper # wrapper 함수 반환 @trace # @데코레이터 def hello(): print('hello') @trace # @데코레이터 de..