기본 콘텐츠로 건너뛰기

라벨이 장식자인 게시물 표시

[matplotlib]quiver()함수

[python] 데코레이터(Decorator, 장식자)

장식자(Decorator) 함수는 일급 객체 이므로 다른 함수에 인수로 전달될 수 있습니다. 이 방식으로 인수로 전달된 함수의 결과는 더 자세한 정보를 첨가시키는 등의 수정을 일으킬 수 있습니다. 다음 함수 dol2won 은 달러를 원화로 전환하는 것으로 달러와 환율을 인수로 받습니다. 다음의 결과와 같이 결과는 단순히 숫자로 반화됩니다. def dol2won(dol, wpd): return dol*wpd dol2won(3, 1200) 3600 다음 deco() 는 중첩함수 를 포함하는 함수로 클로저(closure) 입니다. 이 함수의 인수는 다른 함수이며 중첩함수는 인수로 전달된 함수를 사용합니다. def deco(fn): def wrapper(*args, **kwargs): result=fn(*args, **kwargs) return f'{result} 원' return wrapper 그림 1은 함수 deco() 의 실행 순서를 나타낸 것입니다. 함수 deco() 실행과 동시에 중첩함수를 호출합니다. 이 함수의 인수는 내부에 정의되지 않으므로 외부에서 전달해야 합니다. 즉, 클로저 입니다. 실행된 중첩함수는 인수로 전달된 함수를 적용하여 결과를 반환합니다. 그림 1. 함수 deco()의 실행 순서. dwon=deco(dol2won) dwon(3, 1200) '3600 원' 위 결과는 함수 dol2won() 함수의 결과와 같지만 단위를 표시하는 것으로 수정되었습니다. 파이썬에서는 다음과 같이 코딩하여 같은 결과를 반환할 수 있습니다. @deco def dol2won(dol, wpd): return dol*wpd dol2won(1000, 1200) '1200000 원' 위 코딩은 함수 위에 @함수 를 첨가합니다. 이것은 함수가 @함수 의 인수로 전달된다는 것을 의미합니다. @ 과 함께 첨가된 함수...