티스토리 뷰
728x90
반응형
목차
파이썬으로 간단한 앱과 게시판을 구현하던 중 데코레이터라는 단어를 접하게 되었다.
처음에는 그냥 파이썬에서 사용되는 애너테이션이구나~ 하고 사용해 왔으나 조금 다른 점이 있다고 해서
정리하고 넘어가기로.
이 글에서는 먼저 애너테이션과 데코레이터의 정의를 정리한 뒤
그 공통점과 차이점에 대해 간략하게 정리한다.
결론부터 말하자면 둘 다 코드의 확장성, 가독성을 높이고 메타데이터를 제공하는 데 사용되며,
디테일한 용도, 언어, 실행시점, 사용 대상 등에 차이가 있다.
Annotation
애너테이션은 직역하면 주석이라는 뜻이다.
하지만 코드레벨에 사용자가 입력한 주석과 구분하기 위해 그냥 애너테이션이라고 부른다.
주로 Java, Kotlin, C#등의 정적 언어에서 사용되며
'@'를 사용하고, 메타데이터와 코드의 확장성, 가독성을 위해 필드, 메서드, 클래스 등에 적용된다.
Decorator
데코레이터는 말 그대로 '장식자'라는 뜻을 가지고 있다.
Python과 같은 동적 언어에서 사용되며, 역시 '@'를 이용해 표시한다.
함수와 클래스 등의 기능을 확장하거나 수정하는 데 그 목적이 있다.
Commons
- '@' 기호를 사용해 적용한다.
- 코드의 확장성, 가독성, 메타데이터 제공 등의 목적을 가진다.
Differences
- 용도
데코레이터는 기능의 확장/수정에, 애너테이션은 메타데이터 추가에 그 중점을 둔다. - 사용 언어
데코레이터는 주로 동적 타입, 애너테이션은 주로 정적 타입 언어에서 사용한다. - 실행 시점
데코레이터는 대체로 런타임에, 애너테이션은 컴파일 타임에 정보를 제공한다. - 사용 대상
데코레이터는 함수, 클래스 등에 적용할 수 있다.
애너테이션은 필드, 매개변수, 패키치, 메서드, 클래스 등 더 다양한 곳에 적용할 수 있다. - 복잡도
데코레이터가 애너테이션에 비해 비교적 복잡한 로직을 가질 수 있다.
반응형
'Python > Python' 카테고리의 다른 글
[Python]복붙으로 끝내는 셀레늄 크롤링(2) (0) | 2023.10.27 |
---|---|
[Python]복붙으로 끝내는 셀레늄 크롤링(1) (2) | 2023.10.24 |
[Python]11727번, 2×n 타일링 2 (0) | 2023.10.20 |
[Python]__init__.py에 대하여 (0) | 2023.08.21 |
[Python]전략패턴 (0) | 2023.08.15 |
[Python]enumerate() 내장함수 (0) | 2023.05.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 맛집
- Python
- 백준
- spring
- 남미
- 칼이사
- Algorithm
- a6000
- 세모
- BOJ
- 중남미
- 유럽
- 동적계획법
- 여행
- RX100M5
- 세계여행
- 스프링
- 스트림
- 세계일주
- 야경
- java
- 파이썬
- 면접 준비
- 자바
- 기술면접
- 알고리즘
- 지지
- 유럽여행
- Backjoon
- 리스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함