Python中利用@符号可以很容易实现函数装饰器的功能,本文就这些用法做一些简单的总结。
介绍
Python中由于函数本身也可以当作变量来使用,因此可以直接将函数作为另一个函数的参数传入,这也为装饰器的实现提供了便利。
def test():
print("this is a test")
t = test
t()
执行结果如下:
用法实例
用法一
def decorator(f):
print("this is the decorator function...")
return f
@decorator
def func():
print("this is the main function")
if __name__=='__main__':
func()
运行结果
如上所示使用@符号的代码相当于如下代码效果
func = decorator(func)
用法二
需要参数时可以采用如下方式
def decorator(*args, **kwargs):
print("this is the decorator function...")
print(args)
print(kwargs)
def f(func):
print("this is in decorator")
return func
return f
@decorator(1, 2, a='a', b=4)
def func():
print("this is the main function")
if __name__=='__main__':
func()
运行结果