일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 호이스팅
- wecode
- bcrypt
- 노드
- 장고초기세팅
- CORS
- 자바스크립트
- Django
- OSI7계층
- manytomanyfield
- typescript
- async/await
- django westagram
- pm2
- nodeJS
- Jest
- 트랜잭션
- node
- status code
- rebase
- on_delete
- crud2
- JWT
- javascript
- 실행 컨텍스트
- docker
- TypeError: this.boardRepository.createBoard is not a function
- 스코프
- 프로미스
- westagram
- Today
- Total
될때까지
((Python)) 데코레이터 끝내버리겠다. 본문
데코레이터란?
하나의 함수를 매개변수로 받아 다른 함수를 반환하는 함수를 말한다. 여러개의 함수가 연속적으로 자동 호출되게 하고 싶을 때 데코레이터를 사용한다. 함수를 매개변수로 사용할 수 있는 이유는 함수도 객체이기 때문!!
1. def welcome_decorator(func):
2. def inner_method():
3. return func() + "welcome to WECODE!"
4. return inner_method # welcome_decorator함수는 inner_method함수를 반환하고 있는거지 호출이 아니다.
5.
6. @welcome_decorator
7. def greeting():
8. return "Hello, "
9.
10. print(greeting())
greeting함수의 호출이 10번줄에서 일어났다.
print(greeting())
그럼 함수를 실행하자. 해당 greeting함수는 6번에서 보면 데코레이터 표시와 함께 붙어있다.
데코레이터가 붙은 함수 greeting이 호출이 되면 파이썬이 아래와 같이 변환해서 호출을 한다.
decorated_function = welcome_decorator(greeting)
decorated_function()
매개변수로 greeting 함수를 갖고 있는 welcome_decorator 함수의 호출 결과(즉 반!환!값!)가 decorated_function에 담긴다.
(왜냐 괄호로 호출을 하고 나서 변수에 담았으니까 실행 결과가 담긴다!! )
welcome_decorator(greeting)의 반환값은 return inner_method이니까 inner_method 함수 자체가 decorated_function에 담긴다.
(왜냐 () 괄호를 안붙였으니까 함수가 실행이 안되고 그냥 함수 자체를 객체로 전달한다!! )
decorated_function() => 괄호를 붙여서 함수의 호출이 일어났으므로 이때 실행을 한다.
def inner_method():
return greeting() + "welcome to WECODE!"
inner_method()는 greeting()함수를 호출하니까 greeting()함수가 실행되고
def greeting():
return "Hello, "
"Hello, "를 반환한다!!! 함수의 호출이 끝났으니까 아까 그 코드로 돌아가게 되고
def inner_method():
return greeting() + "welcome to WECODE!"
greeting()은 "Hello, "가 된다. 그 뒤에 "welcome to WECODE!"가 붙어서
최종 결과값으로 "Hello, wecolme to WECODE!"가 찍힌다
이해하는데 이틀이 걸렸다니 내시간.. 여러 멘토분들께 여쭤봤지만 아!! 하고 스쳐지나간 건 같은 동기분의 설명 ㅠㅠㅠㅠㅠㅠ 잘왔다 위코드 데코레이터 그렇게 넘어갑니다.!
멘토님이 전달주신 사이트 영어라서 읽다가 우선 포기했지만.. 나중에 헷갈리는 개념이 생기면 또 찾아봐야하니까 슬쩍 남겨두기
https://realpython.com/primer-on-python-decorators/#simple-decorators
'프로젝트 > wecode' 카테고리의 다른 글
((MySQL)) 삭제하고 재설치하는 방법 (0) | 2022.06.27 |
---|---|
((Python)) How import statement finds modules and packages (0) | 2022.06.25 |
((Python)) 추가 개념정리 (0) | 2022.06.24 |
((Python)) Replit 55. Class (0) | 2022.06.23 |
((Python)) Set vs Dictionary, List vs Tuple (0) | 2022.06.23 |