Python Decorator(데코레이터)

왜 데코레이터를 사용할까?

  • 데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용

As-Is

def hello():
    print('hello 함수 시작')
    print('hello')
    print('hello 함수 끝')
 
def world():
    print('world 함수 시작')
    print('world')
    print('world 함수 끝')
 
hello()
world()

To-Be

def trace(func):                             # 호출할 함수를 매개변수로 받음
    def wrapper():
        print(func.__name__, '함수 시작')    # __name__으로 함수 이름 출력
        func()                               # 매개변수로 받은 함수를 호출
        print(func.__name__, '함수 끝')
    return wrapper                           # wrapper 함수 반환
 
@trace    # @데코레이터
def hello():
    print('hello')
 
@trace    # @데코레이터
def world():
    print('world')
 
hello()    # 함수를 그대로 호출
world()    # 함수를 그대로 호출

Comment

  • 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용한다고 하는데, 아직 크게 감이 오지는 않는다.
  • 다만 실행 과정에서 로깅(Logging), 또는 디버깅(Debugging)할 때나,
  • 또는 어댑터(Adapter)나 @abstractmethod 와 함께, 추상클래스 구현시 필요할 듯하다. 예를 들어 시스템 트레이딩을 구축하는데 업비트와, 빗썸에 대해서 공통적인 기능은 추상클래스를 통해서 메소드 목록만 우선 구축하고, 각각 구현은 상속 받아서 하면 될텐데 이럴 때 사용되는 듯.

Reference

Read more

DataFrame은 Pandera로, 모델은 Pydantic으로 데이터를 검증한다.

DataFrame은 Pandera로, 모델은 Pydantic으로 데이터를 검증한다.

Pandera: 데이터프레임 검증에 최적화된 도구 주요 장점 * Pandas와 통합: Pandas 데이터프레임에 대해 스키마 기반 검증을 수행합니다. * 유연한 검증 조건: 열 데이터 타입, 값 범위, Null 여부 등 다양한 검증 조건을 정의할 수 있습니다. * 명확한 오류 메시지: 스키마 불일치에 대한 명확한 오류 메시지를 제공합니다. 단점 * 대용량 데이터 검증에서는 속도가 느릴 수

Tobit Regression은 Censored Data에 적합한 Regression이다.

Tobit Regression은 Censored Data에 적합한 Regression이다.

Tobit Regression * Tobit 회귀(Tobit Regression)는 종속 변수가 특정 값에서 절단(Censored)된 상황에서 데이터를 분석하기 위해 사용되는 통계 기법입니다. * James Tobin이 처음 제안한 이 모델은 경제학과 사회과학 분야에서 자주 사용되며, 일반 선형 회귀로는 설명할 수 없는 상황에서 효과적으로 적용할 수 있습니다. Tobit Regression 수식 1. 관측된 종속 변수