Decorator

-·2022년 1월 25일
0

Python

목록 보기
2/4
Python

Generator, Decorator, GIL 등

멀티프로세싱은 어떻게 동작하는가

메모리 영역에서 어떤일이 발생하는가

decorator가 뭐냐? 고 물으면 내가 대답할 수 있는건 머쓱하게도 @라는거 밖에 없다..

Python decorator

파이썬의 Decorator ! 일단 python docs에 검색 갈겨보자.

데코레이터 함수는 다른 함수를 리턴하는 함수다. @wrapper 구문을 통해 함수 변환에 적용된다고 한다.

감자는 조금 더 자세한 예시를 원한다. 바로 Python decorator 검색 갈겨보자.
코딩도장-decorator

자세하다..정말..

데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용합니다. 


함수를 수정하지 않고 추가기능을 구현한다고 ?!
뭔소리야..

예시

코딩도장의 예시를 확인해보자.

예를 들어 함수의 시작과 끝을 출력하고 싶다면 함수의 시작과 끝에 print문을 넣는것이 가장 먼저 떠오른 방법이다.

(예시부터 너무 친숙하다. 감자가 버그를 찾기 위한 무한 print문...?!)

익숙함에 속아 편리한 기능을 무시하지말자..
함수가 200개면 400개의 print문을 추가해야한다. 함수 이름도 바꿔가면서..

단순반복작업? 개발자는 못참지
decorator함수를 사용해보자

trace 함수 안에서 wrapper() 함수를 만들고 이를 통해 실행할 함수를 감싼다! (wrapper 닉값한다.) 그리고 wrapper 함수를 반환한다.

흐름이 정말 간단하다 ! 보이는 그대로다!

처음부터 계속 언급되었던 @를 통해 데코레이터를 사용할 수 있다!!

여러번 감쌀 수 있을까?!

@를 두번 쓸 수 있다. 순차적으로 적용된다 !!

출력이 직관적이기에 이해하기 쉽다.
first함수는 second함수를, second함수는 func를 꾸며주었다.

결론

함수를 수정하지 않고 추가기능을 구현한다고 ?! 

가능하다. 중간을 뜯어고치는게 아닌 앞뒤로 !

decorator :

기존의 함수를 수정하지않고 기능을 추가할 수 있는 파이썬 method로 
함수를 parameter로 받고, 해당 함수에 기능에 장식하듯, 기능을 추가하는 메소드이다!
profile
-

0개의 댓글