728x90

오랬동안 프로그램을 해왔지만 파이썬에는 처음보는 신기한 문법이

많아서 자주 공부를 해야한다.

이번에는 @표시가 붙은 파이썬 소스를 공부 하다가 궁굼해서 검색을 해보니 데코레이터가는 개념이 있어서 chatGPT의 도움을 받아서 정리 한다.

파이썬 문장에 @의미

파이썬에서 '@' 기호는 주로 데코레이터(Decorator)라는 개념과 함께 사용됩니다. 데코레이터는 파이썬에서 함수나 클래스를 수정하지 않고 기능을 추가하거나 수정할 수 있는 기능을 제공합니다.

데코레이터는 기존 함수나 클래스를 래핑하며, '@' 기호를 사용하여 함수나 클래스 위에 위치시킵니다. 예를 들어, '@classmethod'는 클래스 메소드를 정의할 때 사용되며, '@property'는 클래스 속성을 호출하는 메소드를 정의할 때 사용됩니다.

또한, '@' 기호는 데코레이터 외에도 다른 용도로 사용될 수 있습니다. 예를 들어, '@' 기호를 사용하여 데코레이터 없이도 함수나 클래스를 동적으로 호출하거나 참조할 수 있습니다. 이러한 용도로 '@' 기호를 사용하는 경우는 비교적 드물지만, 파이썬에서 많이 사용되는 기능 중 하나입니다.

파이썬에서 데코레이터(Decorator)라는 개념

파이썬에서 데코레이터(Decorator)는 기존 함수나 클래스를 수정하지 않고 기능을 추가하거나 수정할 수 있는 기능을 제공하는 문법적인 요소입니다.

데코레이터는 함수나 클래스의 정의 위에 '@' 기호와 함께 선언됩니다. 데코레이터는 함수나 클래스를 래핑하며, 래핑된 함수나 클래스를 호출할 때 데코레이터가 추가한 기능을 실행합니다.

데코레이터는 주로 코드의 재사용성과 가독성을 높이는 데에 활용됩니다. 또한, 파이썬에서 많이 사용되는 라이브러리들도 데코레이터를 많이 활용하고 있습니다. 예를 들어, Flask 웹 프레임워크에서는 데코레이터를 사용하여 URL 경로와 뷰 함수를 연결하고, Django 웹 프레임워크에서는 데코레이터를 사용하여 로그인 여부나 권한을 검사하는 등의 기능을 추가합니다.

데코레이터를 만드는 방법은 간단합니다. 일반적으로 데코레이터 함수를 작성하고, 이 함수 내부에서 래핑된 함수나 클래스를 받아 기능을 추가한 뒤, 새로운 함수나 클래스를 반환합니다. 이렇게 만들어진 데코레이터는 기존 함수나 클래스 위에 '@' 기호를 붙여 적용할 수 있습니다.

 

 

예제 프로그램

import time

def time_it(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(f"실행 시간: {end - start:.5f}초")
        return result
    return wrapper

@time_it
def my_function():
    time.sleep(1)

my_function()

-----------
실행 시간: 1.00009초

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업,인공지능프로젝트

728x90

+ Recent posts