시작하기무료로 시작하기

반환 타입 출력하기

여러분은 친구들과 함께 작업해 온 패키지를 디버깅하고 있어요. 함수 중 하나에서 반환되는 데이터에 이상한 일이 벌어지고 있는데, 정확히 어떤 함수가 문제를 일으키는지조차 확신이 서지 않아요. 함수가 특정 값을 반환하리라 예상했는데 다른 것을 반환할 때 버그가 슬쩍 들어올 수 있다는 걸 알고 있죠. 예를 들어, 함수가 numpy 배열을 반환하길 기대했는데 리스트를 반환한다면 예기치 않은 동작이 발생할 수 있어요. 이것이 문제의 원인이 아님을 확인하기 위해, 어떤 함수에든 적용하면 호출될 때마다 반환되는 변수의 타입을 출력하는 데코레이터 print_return_type()을 작성하기로 했어요.

이 연습은 강의의 일부입니다

Python으로 함수 작성하기

강의 보기

연습 안내

  • 중첩 함수 wrapper()를 만들어 새로 데코레이트된 함수가 되게 하세요.
  • 데코레이팅되는 함수를 호출하세요.
  • 새로 데코레이트된 함수를 반환하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

def print_return_type(func):
  # Define wrapper(), the decorated function
  ____ ____(____, ____):
    # Call the function being decorated
    result = ____(____, ____)
    print('{}() returned type {}'.format(
      func.__name__, type(result)
    ))
    return result
  # Return the decorated function
  return ____
  
@print_return_type
def foo(value):
  return value
  
print(foo(42))
print(foo([1, 2, 3]))
print(foo({'a': 42}))
코드 편집 및 실행