반환 타입 출력하기
여러분은 친구들과 함께 작업해 온 패키지를 디버깅하고 있어요. 함수 중 하나에서 반환되는 데이터에 이상한 일이 벌어지고 있는데, 정확히 어떤 함수가 문제를 일으키는지조차 확신이 서지 않아요. 함수가 특정 값을 반환하리라 예상했는데 다른 것을 반환할 때 버그가 슬쩍 들어올 수 있다는 걸 알고 있죠. 예를 들어, 함수가 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}))