2023년 6월 업데이트
안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, Python 초급 강좌 목차 - 18. 데코레이터(Decorators)를 진행토록 하겠습니다.
SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록
코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.
예를 들어, 18_decorators.py를 생성하고 코드를 실행합니다.
TL;DR
데코레이터(Decorators)는 Python 코드에 의미나 기능을 추가하는 속성(attribute)과 유사합니다. 데코레이터는 Python 함수에 확장 기능을 제공하고, Flask의 라우팅과 같은 웹 어플리케이션 개발에서도 사용됩니다.
Python 초급 강좌 목차 - 18. 데코레이터(Decorators)
데코레이터(Decorators)는 Python의 코드 블록에 의미나 기능을 추가한다는 점에서 속성(attribute)과 유사합니다. Flask 또는 Django와 같은 프레임 워크에서 자주 사용됩니다. Python 개발자로서 대부분의 경우, Decorator를 만들기보다는 주로 사용하게 될 것입니다.
이 SQLER의 Python 초급 강좌의 목적은, 강좌를 통해 Python에 익숙해지고, 다른 코드들을 쉽게 읽고 변경하는 기본을 쌓기 위함입니다. 특히, Django나 Flask와 같은 Python의 인기 있는 웹 애플리케이션 제작 프레임워크 역시 마찬가지입니다. 이 강좌에서는 코드에서 사용되는 데코레이터를 파악하고, 이를 잘 사용하는 방안에 대해서 소개합니다.
일반적인 데코레이터 구조
# Decorators 예시 @log(True) def sample_function(): print('this is a sample function')
데코레이터는 이런 형태로 사용됩니다.
Flask의 데코레이터 패턴
Flask와 같은 웹 애플리케이션 프레임워크에서는 이런 형태로 사용됩니다.
@app.route("/profile", methods=["GET", "POST"]) def profile: return render_template("profile.html")
웹서버의 /profile으로 GET이나 POST 요청이 오면 이 요청을 profile.html 파일에서 처리하도록 라우트 하는 코드입니다.
이런 형태로, 데코레이터는 기존 python의 function에 확장된 기능을 제공합니다.
간단한 데코레이터 생성
import functools from colorama import init, Fore init() def color(color): def wrapper(func): @functools.wraps(func) def runner(*args, **kwargs): print(color + 'changing to blue') func(*args, **kwargs) return runner return wrapper @color(color=Fore.BLUE) def greeter(): print('Hello, world!!') print('Just saying hi again') greeter()
이렇게 데코레이터를 생성해 사용하는 것도 가능합니다.
파이썬 초급 강좌에 참여해 주셔서 감사합니다. 다음 파이선 중급 강좌도 많은 관심 부탁 드립니다.
파이썬 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.
책구매 링크: 챗GPT와 함께하는 파이썬 & 머신러닝 코딩 마스터
참고링크
개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝