궁금합니다.
inner_function을 정의할때 (*args,**kwargs)를 사용하는
이유가 있나요?
그리고 굳이 func를 리턴해주는 이유가 무엇인가요?
이런식으로 짠다면 어떤문제가 있을수 있나요?
답변 1
6
예제로 주신 내용에서는 inner_function 이 (*args, **kwargs) 인자를 받지 않아도 문제가 되지 않고 func 를 리턴해주지 않아도 전혀 상관이 없습니다. 이유는 test1() 함수가 인자를 받지 않았고 test1() 함수가 리턴하는 값이 없기 때문입니다. 그러나!!!!
import time
def time_checker(func):
def inner_function():
start_time = time.time()
result = func()
end_time = time.time()
print("함수 {} 동작시간 :{}".format(func.__name__,end_time - start_time))
return inner_function
@time_checker
def test1(a, b):
for i in range(5):
time.sleep(0.1)
return a+b
c = test1(5, 10)
print(c)
예를 들어 위의 코드같은 상황이라면 오류가 발생하고 당연한 얘기지만 c 에 값이 들어가질 않습니다.
import time
def time_checker(func):
def inner_function(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print("함수 {} 동작시간 :{}".format(func.__name__,end_time - start_time))
return result
return inner_function
@time_checker
def test1(a, b):
for i in range(5):
time.sleep(0.1)
return a+b
c = test1(5, 10)
print(c)
그래서 위처럼 작성해야 어떻게 생긴 함수던 데코레이터를 적용할 수 있게 되고 해당 함수의 결과가 정상적으로 리턴됩니다. *args 로 a, b 값을 받을 수 있게 되며 result 를 리턴했기 때문에 c = test(5, 10) 의 리턴값이 c에 문제없이 들어갑니다. 이해가 되셨길 바랍니다. ^^
38강 = 연산자 더하고 빼기
0
60
2
주석처리
0
116
1
함수의 파라미터값 msg
0
155
1
강의자료 이미지 안나옴
0
239
3
강의자료 질문 두번째
0
165
3
강의자료 관련 질문
0
116
1
파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.
0
235
1
소수 너무 어려워요
0
245
1
imagefont 함수 사용
0
239
1
pylint
0
357
1
add 함수 문의 ㅠㅠ
0
283
1
형식 문의드립니다.
0
209
1
변수 명을 왜 src, tar로 하셨는지 궁금합니다.
0
602
1
숫자야구 코드를 짜 봤는데 뭔가 이상합니다.
0
253
1
zsh: command not found: pylint
0
269
1
텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ
0
546
1
질문드립니다.
1
374
2
list.reverse() 출력에 대해서 질문있습니다.
1
433
1
데코레이터 함수 및 동작시간 질문입니다.~
1
323
2
opencv 사용하면서 궁금한점 (해상도)
1
781
1
질문드립니다.
1
299
1
아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?
1
445
1
크롤링안되는 현상 문의 드립니다.
1
421
1
파이썬 크롤링 관련 문의
1
277
1





