바뀜
둘러보기로 가기
검색하러 가기
← 이전 편집
6. 데코레이터
(편집)
2023년 8월 4일 (금) 17:23 판
1,490 바이트 추가됨
,
2023년 8월 4일 (금) 17:23
잔글
편집 요약 없음
1번째 줄:
1번째 줄:
== 개요 ==
== 개요 ==
decorator. 서비스를 만들 때 게시물을 보기 위해 로그인을 해야하는 경우 등에서 쓰인다.
decorator. 서비스를 만들 때 게시물을 보기 위해 로그인을 해야하는 경우 등에서 쓰인다.
+
+
함수를 수정하지 않고 추가기능을 넣고 싶을 때.
다음과 같이 사용한다.<syntaxhighlight lang="python">
다음과 같이 사용한다.<syntaxhighlight lang="python">
13번째 줄:
15번째 줄:
print('게시물 보기.')
print('게시물 보기.')
</syntaxhighlight>login함수에 들어가는 함수가 데코레이터 아래 있는 함수가 된다. 즉, 상위함수인 login에서 일련의 과정을 처리한 후 아래의 view를 login함수 안에서 다룬다.
</syntaxhighlight>login함수에 들어가는 함수가 데코레이터 아래 있는 함수가 된다. 즉, 상위함수인 login에서 일련의 과정을 처리한 후 아래의 view를 login함수 안에서 다룬다.
+
+
== 기초 사용법 ==
+
{| class="wikitable"
+
!의도
+
!설명
+
!방법
+
|-
+
|정의
+
|함수 안에 함수를 넣는 방식으로 사용한다.
+
|<syntaxhighlight lang="python">
+
def 데코레이터이름(func):
+
def wrapper():
+
func.__name__ # 등의 속성을 이용하여 함수를 조작하는 등...
+
return 특정값
+
return wrapper
+
</syntaxhighlight>
+
|-
+
|인수와 함께 정의
+
|데코레이터가 꾸며줄 함수가 받는 인수를 데코레이터에서도 받고 싶을 때.
+
|<syntaxhighlight lang="python">
+
def 데코레이터이름(func): # 기존 합수를 인수로 받는다.
+
def wrapper(*args, **kwargs): # 데코레이터 역할. *args, **kwargs 매개변수 추가
+
func.__name__ # 등의 속성을 이용하여 함수를 조작하는 등...
+
func(*args) # 받은 함수의 결과값을 조작할 수도 있다.
+
return 특정값
+
return wrapper
+
</syntaxhighlight>
+
|-
+
|적용
+
|@로 꾸며준다.
+
여러개를 적용할 수도 있는데, 함수에서 가까운 데코레이터1부터 2 순으로 적용된다.
+
|<syntaxhighlight lang="python">
+
@데코레이터2(인수, ...)
+
@데코레이터1(인수, ...)
+
def 적용할함수(인수, ...)
+
...
+
return ...
+
</syntaxhighlight>
+
|}
+
+
== 잘 안쓰는 방법 ==
+
{| class="wikitable"
+
!의도
+
!설명
+
!방법
+
|-
+
|상속
+
|기존 데코레이터에 간단한 기능을 추가하여 사용하고 싶을 때.
+
|
+
|}
[[분류:기초]]
[[분류:기초]]
Sam
사무관
,
인터페이스 관리자
,
관리자
, 교사
편집
1,408
번
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
계정 만들기
로그인
이름공간
문서
토론
변수
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
특수 문서 목록
인쇄용 판