방명록
- [Python] Decorator(데코레이터)2024년 02월 09일 17시 33분 35초에 업로드 된 글입니다.작성자: 묭동이
안녕하세요 오랜만에 글을 작성하게 되었습니다
이번 글에서는 파이썬의 기초 문법 중 하나인 데코레이터 패턴에 대해 다뤄보도록 하겠습니다 !
1. Decorator(데코레이터)란?
- Python의 데코레이터는 함수나 메서드의 변형을 위해 사용하는 디자인 패턴입니다.
- 데코레이터는 다른 함수를 감싸는 함수로, 감싸진 함수의 동작을 수정하거나 확장할 수 있습니다.
- 데코레이터는 코드의 재사용성과 가독성을 향상시키며, 유지보수에 도움을 줍니다.
2. Decorator(데코레이터)의 사용
- 데코레이터는 여러 상황에서 유용하게 사용할 수 있으며 아래 내용은 주로 데코레이터를 사용하는 예입니다.
- 1. 로깅: 함수의 실행에 대한 로그를 남기고 싶은 경우
- 2. 권한 검증: 사용자의 권한을 확인하는데 사용하는 경우
- 3. 성능 측정: 함수의 실행 시간을 측정하고자 하는 경우
- 4. 캐싱: 함수의 결과를 저장하여 재사용하고자 하는 경우
3. Decorator(데코레이터)의 사용 예시
코드 설명
- 1. 데코레이터 함수 정의 (calculator): calculator는 함수 func를 인자로 받는 데코레이터입니다.
내부에 num1과 num2를 매개변수로 받는 inner라는 중첩 함수를 정의하였고, inner 함수는 나눗셈 연산을 수행하기 전과 후에 추가적인 작업을 수행합니다. - 2. inner 함수의 동작: 먼저, 나눗셈 연산을 시작한다는 메시지를 출력합니다.
num2 (분모)가 0인 경우, 나눗셈이 불가능하다는 메시지를 출력하고 함수를 종료합니다.
0이 아닌 경우, 원래의 divide 함수를 호출하여 결과를 계산하고, 이 결과를 출력한 다음 반환합니다. - 3. divide 함수에 calculator 데코레이터 적용: divide 함수는 두 숫자를 나누는 기능을 가지고 있습니다.
calculator 데코레이터를 이용하여 divide 함수의 실행 전후에 추가적인 로그를 출력하도록 합니다. - 4. 함수 호출: divide(15, 3)과 divide(100, 0)을 호출합니다.
첫 번째 호출에서는 분모가 3으로 0이 아니기 때문에 정상적으로 나눗셈이 수행됩니다.
두 번째 호출에서는 분모가 0이므로 나눗셈을 수행할 수 없다는 메시지가 출력됩니다.
아래의 출력결과 예시 코드를 통해 데코레이터를 사용하여 기존 함수의 코드를 변경하지 않고 기능을 추가한 코드가 정상적으로 수행되었음을 알 수 있습니다.
Referrence
'Python > 기초문법' 카테고리의 다른 글
[Python] list comprehension vs generator expression (0) 2024.01.22 [Python] Anaconda 가상환경 구축(macos) (2) 2024.01.02 [Python] 딕셔너리(사전) 자료형 (2) 2023.12.30 [Python] 클래스 선언과 객체 생성 (2) 2023.12.30 [Python] 문자열 포맷팅(String Formatting) (0) 2023.12.30 다음글이 없습니다.이전글이 없습니다.댓글