함수 호출을 감싸 공통 동작을 재사용합니다.
데코레이터는 함수를 받아 새 함수를 반환하며 @문법으로 적용합니다. 권한 검사, 측정, 재시도처럼 여러 함수 호출 전후에 같은 동작을 넣을 때 사용합니다. functools.wraps로 원래 함수의 이름과 문서를 보존합니다.
예제에서 @decorator def function(): ... 부분부터 찾으세요. 값을 만드는 표현식과 그 값을 다음 문장으로 넘기는 흐름을 한 줄씩 따라가면 실행 결과를 스스로 설명할 수 있습니다.
인수를 받는 데코레이터는 데코레이터 팩토리, 실제 데코레이터, 래퍼의 세 단계가 됩니다. 실행 시점과 감싸는 순서를 천천히 추적하세요.
비즈니스 로직이 데코레이터에 과도하게 숨지 않게 하고 인증과 트랜잭션 경계는 실패 동작을 명확히 문서화합니다.
이 코드는 브라우저의 실제 Python에서 실행됩니다. 먼저 현재 결과를 확인한 뒤 호출 횟수를 세어 출력하는 데코레이터로 확장하세요.
wraps를 빼면 디버깅과 문서 도구에서 모든 함수 이름이 wrapper로 보일 수 있습니다.
직접 바꿔보세요호출 횟수를 세어 출력하는 데코레이터로 확장하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.