-
Python: 파이썬 데코레이터(Decorator) 공부하기!Python 2020. 8. 15. 20:35
파이썬의 데코레이터 기능에 대해 알아봅시다.
Decorate의 사전적 의미는 장식하다, 꾸미다 이러한 의미인데요
그렇다면 파이썬에서 데코레이터(decorator)는 어떠한 역할을 할까요?
데코레이터는 메소드를 꾸밉니다. 좀 더 정확하게 말하면
메소드를 매개변수로 받아서 기존함수에 부가적인 기능을 추가하여 사용할 수 있도록 합니다.
예제를 확인해봅시다.
def add_print_to(inner): def outer(): print("함수 시작") inner() print("함수 끝") return outer
add_print_to 함수는 inner라는 메소드를 매개변수로 받습니다.
inner는 outer()라는 외부 함수로 둘러 쌓이고
"함수 시작" 과 "함수 끝"이라는 출력문으로 꾸며집니다.
add_print_to 함수로 꾸며보겠습니다.
def say_hello(): print("안녕하세요") add_print_to(say_hello)()
함수 시작 안녕하세요 함수 끝
"안녕하세요" 가 "함수 시작"와 "함수 끝"으로 잘 꾸며집니다.
하지만 저렇게 일일히 다 작성하기 불편합니다 .
그래서 다음과 같이 기본 메소드위에
@add_print_to 라고 적어줍니다.
@add_print_to def say_hello2(): print("안녕하세요") @add_print_to def say_goodbye(): print("안녕히가세요") say_hello2() say_goodbye()
함수 시작 안녕하세요 함수 끝 함수 시작 안녕히가세요 함수 끝
say_hello() 메소드와
say_goodbye() 메소드가 잘 꾸며졌네요
이외에도 데코레이터는 추상화메소드, 클래스메소드를 선언할때도 사용됩니다.
종종 볼일이 있을테니 알아두면 좋겠죠?
반응형'Python' 카테고리의 다른 글
Python: 객체 지향 프로그래밍을 위한 4가지 기본개념 (상속, 추상화, 캡슐화, 다형성)2 (0) 2020.08.16 Python: 객체 지향 프로그래밍을 위한 4가지 기본개념 (상속, 추상화, 캡슐화, 다형성)1 (0) 2020.08.16 Python: 객체지향언어? 클래스(class)? 기초 공부하기! (0) 2020.08.15 Python: 파이썬으로 로또를 만들어보자! (0) 2020.06.30 Python: with open() 파일 읽기(read), 쓰기(write), 덧붙히기(append), strip(), split() 함수란? (0) 2020.06.30