inflearn logo
강의

講義

知識共有

南博士のPython基礎から本番100%を活用

デコレーターで関数の実行時間を測定してみる

질문드립니다.

298

Poki

投稿した質問数 8

1

제가 이해한 동작이 맞나 궁금합니다.

아래와 같은 데코레이션 코드에서,

1. time_checker(func) 함수로 test1(a,b) 함수가 전달

2. inner_function(*args, **kwargs) 함수가 실행됨(여기서 *args, **kwargs 로는 test1()함수의 매개변수(a,b)가 전달이 된다.

3. result 에는 test1(a,b) 함수의 반환값이 저장됨 (a+b)

4. 함수 동작시간을 print함

5. return result (inner_function 함수의 반환값이 result임

6. return inner_function (이 부분이 이해가 잘 안갑니다)

(inner_function 함수를 반환? -> 이 문장으로 인해 함수 동작시간이 print되고 result값이 c에 저장되는 것인가?)

<질문>

1. return inner_function 이 문장이 하는 역할이 정확히 무엇인가요?

2. 데코레이터 함수에 inner_function이 꼭 필요한 것인가? 정확한 역할이 뭔 지 모르겠습니다.

inner_function 함수가 데코레이터 함수로 전달되는 함수의 매개변수를 전달받기 위해 필요하다고 생각하였는데, test1 함수에 매개변수가 없이 전달을 해주어도 None이 출력되네요.

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)

웹-크롤링 python

回答 1

0

nambaksa

1. return inner_function 이 문장이 하는 역할이 정확히 무엇인가요?

inner_function 함수 자체를 반환한다는 이야기 입니다. 여기서 중요한 점은 inner_function 함수를 반환할때 위에서 이해하신 내용이 모두 맞습니다만 func() 가 호출된 시점이 아니란 사실입니다. 쉽게 중요한 점만 이야기 하자면 return inner_function을 통해 inner_function 함수 자체를 반환하고 코드 어딘가에서 inner_function() 함수를 호출해야만 위에서 이해하신 func()를 수행하고 화면에 시간을 출력하고 등의 동작이 이뤄지게 되는 부분입니다.

2. 데코레이터 함수에 inner_function이 꼭 필요한 것인가? 정확한 역할이 뭔 지 모르겠습니다.

inner_function이 없다면 데코레이터가 성립될 수 없습니다. 단지 time_checker함수를 호출했다 해서 데코레디팅된 test1 이 호출되는 것은 아니기 때문입니다.

 

 

 

38강 = 연산자 더하고 빼기

0

59

2

주석처리

0

116

1

함수의 파라미터값 msg

0

153

1

강의자료 이미지 안나옴

0

238

3

강의자료 질문 두번째

0

164

3

강의자료 관련 질문

0

115

1

파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.

0

234

1

소수 너무 어려워요

0

244

1

imagefont 함수 사용

0

238

1

pylint

0

355

1

add 함수 문의 ㅠㅠ

0

280

1

형식 문의드립니다.

0

208

1

변수 명을 왜 src, tar로 하셨는지 궁금합니다.

0

601

1

숫자야구 코드를 짜 봤는데 뭔가 이상합니다.

0

249

1

zsh: command not found: pylint

0

268

1

텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ

0

545

1

질문드립니다.

1

373

2

list.reverse() 출력에 대해서 질문있습니다.

1

431

1

데코레이터 함수 및 동작시간 질문입니다.~

1

322

2

opencv 사용하면서 궁금한점 (해상도)

1

780

1

아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?

1

444

1

크롤링안되는 현상 문의 드립니다.

1

420

1

파이썬 크롤링 관련 문의

1

276

1

정규 표현식 질문있습니다.

1

242

1