파이썬 & 오픈소스 개발 Tip과 강좌

이곳은 파이썬과 여러 오픈소스 기반 프레임워크 관련 Tip과 강좌 게시판 입니다. 관련 개발을 진행하면서 알아내신 Tip이나 강좌와 새로운 소식을 적어 주시면 다른 공부하는 분들에게 큰 도움이 됩니다. 감사합니다. SQLER.com은 개발자와 IT전문가의 지식 나눔을 실천하기 위해 노력하고 있습니다.

안녕하세요. SQLER의 코난 김대우입니다. 

이번 강좌에서는, Python 초급 강좌 목차 - 18. 데코레이터(Decorators)를 진행토록 하겠습니다.

 

SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록

 

코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.

예를 들어, 18_decorators.py를 생성하고 코드를 실행합니다.

 

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()

 

이렇게 데코레이터를 생성해 사용하는 것도 가능합니다.

 

파이썬 초급 강좌에 참여해 주셔서 감사합니다. 다음 파이선 중급 강좌도 많은 관심 부탁 드립니다. 

 

참고링크

개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝

c9-python-getting-started/python-for-beginners/18 - Decorators at master · CloudBreadPaPa/c9-python-getting-started (github.com)

 

 

 

No. Subject Author Date Views
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 547
109 embedded SQL - GlueSQL, rust 기반 오픈소스 프로젝트 file 코난(김대우) 2021.10.22 7
108 대규모 머신러닝 프로젝트 Serving에 사용되는 Python WAS, ASGI - uvicorn file 코난(김대우) 2021.10.06 38
107 Apache Arrow 리뷰 file 코난(김대우) 2021.10.05 26
106 autopep8을 이용한 python 린트(linting) 구현 코난(김대우) 2021.09.15 38
105 Python에서 환경변수(environment variable) 처리 코난(김대우) 2021.09.15 31
104 Python에서 random 문자열이나 숫자 가져오는 방법 코난(김대우) 2021.09.15 35
103 Python 중급 강좌 - 9. 비동기 작업(Asynchronous operations): asyncio 코난(김대우) 2021.01.03 326
102 Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with 코난(김대우) 2021.01.03 180
101 Python 중급 강좌 - 7. 파일작업(File read/write) file 코난(김대우) 2021.01.03 206
100 Python 중급 강좌 - 6. 파일시스템(File system) 관리 코난(김대우) 2021.01.03 215
99 Python 중급 강좌 - 5. 다중상속(Mixins - multiple inheritance) 코난(김대우) 2021.01.03 116
98 Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 63
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 77
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 103
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 138
94 Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패드워드) 관리 - dotenv 코난(김대우) 2021.01.02 96
» Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 72
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 165
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 180
90 Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 66





XE Login