질문입니다
201
작성한 질문수 10
데코레이터의 로직이 함수의 어떤부분에 들어가는지 궁금합니다
답변 1
1
파이썬 데코레이터는 단순히 데코레이터의 로직이 함수 어느 부분에 위치해서 실행되는 단순한 동작방식은 아닙니다. 사람이 이해하기에 그렇게 쉽게 이해할 수 있게 설계되어있을뿐 실제 동작하는 방식은 그보다 훨씬 복잡합니다.
위와 같이 데코레이터 함수를 정의하고 이를 t 라는 변수에 할당하여 dir(t) 를 출력해보면
위외 이미지에서 처럼 t 의 내부 함수들을 확인해 볼 수 있습니다. 여기서 __closure__ 라는 애가 실제 중요한 역할을 하는데 이 클로저가 어떻게 동작하는지 그리고 클로저와 데코레이터는 무슨 차이가 있는지 공부를 해보시면 좀 더 도움이 되지 않을까 생각됩니다.
print(dir(t.__closure__[0]) 을 출력해서 __closure__ 의 구성을 살펴보면 위 이미지 처럼 클로저가 어떻게 구성이 되어있는지 확인할 수 있고 cell_contents 라는 변수에 우리가 할당한 함수명이 임시 보관되어있는 것도 확인해볼 수 있습니다. 이를 보아 데코레이터에 정의한 함수가 수행되고 이렇게 인자로 넘어온 함수명을 cell_contents 에 보관하였다가 실행되어야 하는 순간에 이를 호출하고 리턴하는 방식으로 동작할거라 대강 유추가 가능합니다.
물론 더 정확하게 알기 위해선 실제 소스코드를 보고 분석해보는 방법이 가장 좋습니다.
한글 변수의 한글 상태를 만드는 법?
0
59
1
38강 = 연산자 더하고 빼기
0
73
2
주석처리
0
129
1
함수의 파라미터값 msg
0
167
1
강의자료 이미지 안나옴
0
252
3
강의자료 질문 두번째
0
176
3
강의자료 관련 질문
0
124
1
파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.
0
248
1
소수 너무 어려워요
0
251
1
imagefont 함수 사용
0
245
1
pylint
0
362
1
add 함수 문의 ㅠㅠ
0
290
1
형식 문의드립니다.
0
220
1
변수 명을 왜 src, tar로 하셨는지 궁금합니다.
0
618
1
숫자야구 코드를 짜 봤는데 뭔가 이상합니다.
0
263
1
zsh: command not found: pylint
0
281
1
텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ
0
555
1
질문드립니다.
1
381
2
list.reverse() 출력에 대해서 질문있습니다.
1
441
1
데코레이터 함수 및 동작시간 질문입니다.~
1
337
2
opencv 사용하면서 궁금한점 (해상도)
1
789
1
질문드립니다.
1
306
1
아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?
1
451
1
크롤링안되는 현상 문의 드립니다.
1
433
1





