– Start
点击此处观看本系列配套视频。
作为一个程序员,你一定调查过 bug,定位 bug 是非常困难的,尤其是没有足够日志的情况下。所以,通常我们会在方法的开头和结尾打印出参数和返回值,但是这样就增加了我们的工作量,有没有更好的办法呢?Python 装饰器提供了非常好的解决方案。
下面我们来定义一个 logger 装饰器。
# logger 是个装饰器,它的参数是一个函数,在它的内部定义了一个函数包装目标函数 func
# 这样我们就可以在目前函数执行之前或之后执行一些操作
def logger(func):
def inner(*args, **kwargs):
print(f'Calling {func} with arguments: {args},{kwargs}')
r = func(*args, **kwargs)
print(f'Called {func} returned: {r}')
return r
return inner
下面我们来看看如何使用这个 logger 装饰器。
# 使用 logger 装饰器
@logger
def add(x, y):
return x + y
# 调用
add(1, 1)
装饰器会包装目标方法,这样我们就可以在方法之前或之后执行一些操作。
– 更多参见:Python 精萃
– 声 明:转载请注明出处
– Last Updated on 2018-08-26
– Written by ShangBo on 2018-08-26
– End