본문 바로가기
개발

데코레이터(decorator)를 쉽게 이해하는 비유

by Kyutree 2026. 2. 3.

데코레이터, 그거 완전 마법 아니냐고요?

기존 코드 건드리지 않고 기능 덧붙이는 거, 마치 몰래 뿅 하고 나타나는 요정 같아요.

웹 개발할 때 없으면 진짜 곤란한데, 처음엔 외계어 같죠.

 

데코레이터, 함수의 변신술사

 

데코레이터는 쉽게 말해 함수에 옷을 입혀주는 거예요.

기존 함수는 그대로 두고, 앞이나 뒤에 새로운 기능을 추가해주는 거죠.

예를 들어, 어떤 함수가 실행되기 전에 로그를 남기고 싶다고 해봐요.

데코레이터를 쓰면 함수 코드를 직접 수정하지 않고도 간단하게 로그를 추가할 수 있어요.

 

@, 데코레이터 호출 부적

 

데코레이터를 사용할 때는 함수 위에 `@` 기호를 붙여요.

이 `@` 기호가 바로 데코레이터를 호출하는 '부적' 같은 역할을 하는 거죠.

`@로그남기기` 라고 써주면, 해당 함수가 실행될 때마다 로그가 자동으로 찍히는 마법이 펼쳐지는 거예요.

 

고차 함수, 데코레이터의 핵심 재료

 

데코레이터는 '고차 함수'라는 특별한 함수를 재료로 만들어요.

고차 함수는 함수를 인자로 받거나, 함수를 결과로 반환하는 함수를 말해요.

데코레이터는 함수를 받아서 새로운 기능을 추가한 함수를 반환하는, 아주 똑똑한 고차 함수인 셈이죠.

 

코드 재사용성의 끝판왕

 

데코레이터를 쓰는 가장 큰 이유는 바로 코드 재사용성을 높일 수 있다는 거예요.

똑같은 기능을 여러 함수에 적용해야 할 때, 데코레이터 하나만 만들어두면 여기저기 복사-붙여넣기 할 필요 없이 `@` 기호 하나로 해결되거든요.

개발 생산성이 엄청나게 올라가는 거죠.

 

웹 개발 프레임워크, 데코레이터 없이는 상상 불가

 

최근 많이 사용하는 Flask 같은 웹 개발 프레임워크는 데코레이터를 아주 적극적으로 활용해요.

URL 라우팅, 사용자 인증, API 요청 처리 등 다양한 부분에서 데코레이터가 없으면 코드가 엄청나게 복잡해질 거예요.

데코레이터 덕분에 깔끔하고 유지보수하기 쉬운 코드를 작성할 수 있는 거죠.

 

데코레이터는 처음엔 어렵게 느껴질 수 있지만, 웹 개발을 더 쉽고 효율적으로 만들어주는 강력한 도구입니다.

코드 재사용성을 높이고, 관심사를 분리하여 가독성을 향상시키는 데 큰 도움을 주죠.

처음에는 간단한 예제부터 시작해서 점차 복잡한 데코레이터를 만들어보는 연습을 해보세요.

그러다 보면 어느새 데코레이터 없이는 코딩하기 싫어지는 날이 올 겁니다.