您的位置:首页 > 编程语言 > Python开发

Python3装饰器

2019-08-03 21:28 88 查看

自定义装饰器

def fun(fn):  # 自定义一个装饰器
def inner():
print("执行前...")  # 在被装饰的函数前需要执行的操作
fn()  # 调用被装饰的函数
print("执行后...")  # 在被装饰的函数后需要执行的操作

return inner  # 闭包

@fun  # 用自定义的装饰器装函数
def test1():
print("test1")

@fun  # 用自定义的装饰器装函数
def test2():
print("test2")

test1()
print("=" * 20)
test2()

输出结果。可看到在被装饰的函数执行时,在该函数执行前和执行后都可编写所需的处理代码

执行前...
test1
执行后...
====================
执行前...
test2
执行后...

被调用的函数带参数及返回值的情况

def fun(fn):  # 自定义一个装饰器
def inner(*args, **kwargs):  # 传入被装饰函数的参数
print("执行前...")  # 在被装饰的函数前需要执行的操作
ret = fn(*args, **kwargs)  # 调用被装饰的函数
print("执行后...")  # 在被装饰的函数后需要执行的操作
return ret  # 返回被装饰函数的返回值
return inner  # 闭包

@fun  # 用自定义的装饰器装函数
def test1(val):
print("test1 %s" % val)
return "finsh1"

@fun  # 用自定义的装饰器装函数
def test2(val):
print("test2 %s" % val)
return "finsh2"

print(test1('abc'))
print("=" * 20)
print(test2('xyz'))

执行结果

执行前...
test1 abc
执行后...
finsh1
====================
执行前...
test2 xyz
执行后...
finsh2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python def