파이썬 데코레이터에 대해서?

2020. 6. 20. 18:33·언어/Python
반응형

 

파이썬에서 데코레이터란 기존의 코드에 여러가지 기능을 추가하는 파이썬 구문.

@decorator
def function():
	print("I am a decorator!")

위와 같은 코드를 데코레이터라고 말한다. 

 

" @ " 심볼과 데코레이터 함수의 이름을 붙이는 간단한 구문을 사용하면 

데코레이터를 사용할 수 있다.

 

대상함수를 wrapping 하고, 이 wrapping 된 함수의 앞 뒤에 추가적으로

꾸며질 구문들을 정의하여 재사용이 쉽도록 만들어 주는 것이다.

하나의 함수를 취해서 또 다른 함수를 반환하는 함수이다. 

 

def document_it(func):
	def new_function(*args, **kwargs):
    	print('running function:', func.__name__)
        print('positional arguments:', args)
        print('keyword arguments:', kwargs)
        
        result = func(*args, **kwargs)
        print('result:', result)
        return result
        
    return new_function

document_it 함수에 어떤 func 함수 이름을 전달하든지 간에 document_it( ) 는

추가 선언문이 포함된 새 함수를 얻는데. 데코레이터는 실제로  func 함수로부터 코드를 실행하지 않는다.

하지만 document_it( ) 함수로부터 func 를 호출하여 결과뿐만 아니라 새로운 함수를 얻는다.

 

데코레이터를 사용하는 방법은 그냥 @데코레이터_이름 추가만 하면된다.

 

@document_it
def add_ints(a,b):
	return a + b
    

>> add_ints(3,5)
start function add_int
positional arguments : (3,5)
keyword arguments : { }
result: 8
8

add_int 함수는 데코레이터로 설정된 document_it 의 값들을 가져와

아래와 같이 add_ints 의 결과값을 풍부하게 표현할 수 있다.

 

참고 링크

http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%8D%B0%EC%BD%94%EB%A0%88%EC%9D%B4%ED%84%B0-decorator/

 

SchoolofWeb :: 파이썬 - 데코레이터 (Decorator)

파이썬 데코레이터 (Decorator)강좌

schoolofweb.net

https://bluese05.tistory.com/30

 

python decorator (데코레이터) 어렵지 않아요

Python decorator (데코레이터)  Python 으로 작성된 Opensource 의 코드들을 보다 보면, 아래와 같이 @ 로 시작하는 구문 들을 볼 수 있다. @decorator_ def function(): print "what is decorator?"  decorat..

bluese05.tistory.com

https://dojang.io/mod/page/view.php?id=2427

 

파이썬 코딩 도장: 42.1 데코레이터 만들기

Unit 42. 데코레이터 사용하기 파이썬은 데코레이터(decorator)라는 기능을 제공합니다. 데코레이터는 장식하다, 꾸미다라는 뜻의 decorate에 er(or)을 붙인 말인데 장식하는 도구 정도로 설명할 수 있습

dojang.io

 

반응형

'언어 > Python' 카테고리의 다른 글

Python namedtuple (네임드 튜플)  (2) 2020.06.22
파이썬의 다형성(Polymorphism)  (0) 2020.06.20
[pandas] : 판다스 전처리 할때 도움될만한 코드들  (0) 2020.06.11
Python side project 04 : binary search (이진 탐색)  (0) 2020.05.28
Python side project 03 : Email slicer (이메일 슬라이서)  (0) 2020.05.24
'언어/Python' 카테고리의 다른 글
  • Python namedtuple (네임드 튜플)
  • 파이썬의 다형성(Polymorphism)
  • [pandas] : 판다스 전처리 할때 도움될만한 코드들
  • Python side project 04 : binary search (이진 탐색)
쟈누
쟈누
Ad astra per aspera
    반응형
  • 쟈누
    쟈누의 기록공간
    쟈누
  • 전체
    오늘
    어제
    • 분류 전체보기 (444)
      • AWS (31)
        • Glue (4)
        • S3 (1)
      • 클라우드 (0)
      • Data Engineering (37)
        • GitHub (10)
        • NiFi (11)
        • Spark (10)
        • Snowflake (0)
        • 머신러닝, AI (6)
      • 언어 (118)
        • 데이터 베이스 (42)
        • JAVA (9)
        • Python (34)
        • Java Script (15)
        • Linux (18)
      • 프로젝트, 인강 그리고 책 (30)
        • Spotify Project (7)
        • RASA chatbot Project (9)
        • Naver shopping Project (6)
        • 빅데이터를 지탱하는 기술 (8)
      • OLD (56)
        • IT 용어 사전 (13)
        • Front End (12)
        • Back End (31)
      • Error code 모음 (165)
        • 1. SQL errors (17)
        • 2. Hadoop errors (20)
        • 3. Linux Errors (14)
        • 4. Python errors (33)
        • 5. JAVA, Spring errors (41)
        • 6. Jav Script errors (10)
        • 7. Dev Tools errors (9)
        • 8. Git errors (8)
        • 9. Jenkins Errors (4)
        • 10. airflow Errors (2)
        • 11. Aws errors (7)
      • 개인 (1)
        • 책 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 블로그 관리
    • 글쓰기
  • 링크

  • 공지사항

    • 간단한 블로그 소개
  • 인기 글

  • 태그

    SQL
    에러
    NiFi
    Git
    error
    python error
    linux
    자바
    json
    API
    install
    java
    리눅스
    파이썬
    node
    MySQL
    AWS
    설치
    Spring
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
쟈누
파이썬 데코레이터에 대해서?
상단으로

티스토리툴바