오랬동안 프로그램을 해왔지만 파이썬에는 처음보는 신기한 문법이
많아서 자주 공부를 해야한다.
이번에는 @표시가 붙은 파이썬 소스를 공부 하다가 궁굼해서 검색을 해보니 데코레이터가는 개념이 있어서 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초
'코딩교육 > Python' 카테고리의 다른 글
목동코딩학원 , 파이썬 함수에서 리턴값을 여러 개 반환하는 방법 (0) | 2023.04.16 |
---|---|
목동코딩학원, 파이썬에서 사용되는 다양한 기호들에 대해 설명(% // -> ** @ 등) (0) | 2023.04.08 |
목동코딩학원, Python으로 아두이노 제어하는 방법 (0) | 2023.03.25 |
목동코딩학원, Python Tetris(테트리스) 코드 (0) | 2023.03.25 |
목동코딩학원, Python 언어 기초 문법 (0) | 2023.03.25 |