매개변수
172
작성한 질문수 5
def bold(func):
def line(*args, **kwargs):#매개변수 개수에 제한없음
return '<b>'+func(*args, **kwargs)+'</b>'
return line
def italic(func):
def line(*args, **kwargs):
return '<i>'+func(*args, **kwargs)+'</i>'
return line
@bold
@italic
def write(a, b):
return a+b
print(write('hello ', 'world'))
이 코드에서 첫번째 데코레이터인 bold에서는
매개변수 *args, **kwargs가 없어도 될거라 생각해서
매개변수를 지운후에 코드를 돌려보니까 에러가 뜨더라구요..
어차피 bold함수에서 매개변수로 받은 func에서
데코레이터italic이 먼저 실행되고 그 결과를 func에다가만 집어넣으면 되는것같은데
왜 bold데코레이터에서도 매개변수를 입력해야 하는건가요...??
감사합니다!!
답변 1
1
안녕하세요.
우선은 write(a, b): 라고 한다면, @bold / @italic 이 실행되면서, 각 함수의 본체가 a 와 b 가 인자로 들어가는 것이니까요. 이 부분을 지원하려면, 말씀하신 인자 선언이 들어가야 맞을 것 같습니다. 인자가 왜 안들어가도 된다고 생각하시는지 사실 정확히 이해는 안가는데, 제 생각에는 인자값을 포함한 함수가 그대로 넘겨지니까, 다연히 내부에서도 그렇게 선언되어야 맞는 것 같고요.
보통 데코레이터 부분에 상당히 많은 분들께서, 비슷한 문의를 많이 해주셨는데요. 아무래도 이해하기가 쉽지 않다보니, 그럴 수 있는데, 제 생각에는 이렇게 이해하기 어려운 부분 같은 경우는 영상을 두세번 반복해보셔도 더 도움이 될 것 같습니다.
0
인자가 왜 안들어가도 된다고 생각하시는지 사실 정확히 이해는 안가는데
-> Decorator에 유효성 검사 같이 a나 b같은 인자들을 사용하는 기능이 없으면 인자가 필요없어서 *args,**kwargs를 안써도 된다고 생각할 수 있을것 같아요!
아무래도 파라미터가 있는 함수 첫 예시가 유효성 검사이다 보니 '인자들 가지고 뭘 하려면 저렇게 해야되는구나' 라고 생각이 들었습니다.
이 질문을 보고 데코레이터가 꾸며주는 함수 자체에 인자가 있고 없고에 따라 *args,**kwargs를 붙여주면 되는구나 하고 또 배워갑니다!
왠만한 데코레이터는 에러방지를 위해 기본적으로 (*args, **kwarg)를 쓰면 좋겠네요
강의 자료 어디서 다운받나요? 없는데요..
0
170
1
강의 영상은 안나오고 소리만 나옵니다.
0
192
1
섹션 6 인증 failed 질문
0
166
1
섹션 8 flask 다양한 기능: 다양한 데코레이터 before_first_request 문의
0
380
3
192.168.0.12:8085??
0
161
1
04_flask_ABTest에서 blog_abtest.py 실행 시 오류입니다.
0
176
1
수업내용 질문 건
0
196
1
brew로 mysql 설치 후 서버 실행할 때, 터미널에서 anaconda bin 참조하는 문제
0
689
2
crossorigin 프로퍼티에 대해서 질문드립니다.
0
294
1
강의자료 다운로드 문의드립니다.
1
277
1
갑자기 웹 서버 띄울때 이상하게 나옵니다
0
320
1
가장빠른 Vue와 flask, 그리고 REST API 1 강의 질문입니다. (2)
0
351
1
가장빠른 Vue와 flask, 그리고 REST API 1 강의 질문입니다.
0
333
2
Fast api 추가 강좌 개설여부 질문드립니다!.
0
330
2
flask_cors설치 오류
0
630
2
부스트랩 html 다운
0
263
1
혹시 강의자료 공유가 가능한가요?
0
362
1
소스코드는 어디에 있을까요??
1
261
1
안녕하세요 몇가지 질문이 있습니다.
0
345
1
동적함수생성 질문드립니다.
1
643
2
(강의명) flask 로 Rest API 구현과 테스트 실행 : 오류 문의
0
584
1
백엔드 데코레이터 2 강의에 도전 문제 질문드립니다
0
294
1
몽고 DB 공식홈페이지 403 접속 에러 발생합니다.
1
641
3
04._flask_ABTest Pycharm 에서 실행오류
0
496
1





