클로저 & 데코레이터

GreenBean·2021년 8월 14일
0
post-thumbnail

클로저 & 데코레이터

클로저

  • 클로저는 간단히 말해 함수 내에 내부 함수(Inner Function)를 구현하고 그 내부 함수를 리턴하는 함수
  • 이 때 외부 함수는 자신이 가지고 있는 변수값 등을 내부 함수에 전달하여 실행될 수 있게 함
    • 파이썬은 함수도 객체이기 때문에 함수 자체를 인수로 전달하는 것이 가능

데코레이터

  • 클로저를 이용하면 기존 함수에 뭔가 추가적인 부가 기능을 덧붙이기가 아주 편리
  • 기존 함수의 변경 없이 추가적인 기능을 덧붙일 수 있도록 해 주는 클로저데코레이터(Decorator)라고 함
    • 파이썬은 함수명 위에 어노테이션이 있으면 데코레이터 함수로 인식
  • 데코레이터 함수는 기존 함수의 입력 인수에 상관없이 동작하도록 만들어야 함
    • 왜냐하면 데코레이터는 기존함수가 어떤 입력 인수를 취할지 알 수 없기 때문
    • 따라서 이렇게 전달받아야 하는 기존 함수의 입력 인수를 알 수 없는 경우에는 *args와 **kwargs 기법을 이용하여 해결

Tip! *args, **kwargs란?

  • *args : 모든 입력 인수를 튜플로 변환해 주는 매개변수
  • **kwargs : 모든 key=value 형태의 입력 인수를 딕셔너리로 변환해 주는 매개변수

데코레이터 사용 이유

  • 이미 만들어져 있는 기존의 코드를 수정하지 않고도, 래퍼(Wrapper) 함수를 이용하여 여러가지 기능을 추가할 수가 있기 때문
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글