打印返回类型
您正在调试一个和朋友一起开发的包。某个函数返回的数据有些奇怪,但您甚至不确定是哪一个函数在捣乱。您知道,如果期望函数返回某种类型,但它返回了其他类型,就可能引入错误。例如,若您期望函数返回一个 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}))