python 装饰器的用法

为什么要使用装饰器?

在不改变原函数功能的情况,为了添加新的功能 我们可以在函数运行前后给函数添加新的功能

 1 def outer(func):
 2     #fun()等于原f1函数
 3     def inner():
 4         print('ccccc')
 5         r=func()
 6         print('dddd')
 7         return r
 8     return inner
 9 @outer
10 #@outer代表运行了2个步骤:1.将f1作为参数运行outer函数,2.新函数f1=inner()
11 def f1():
12     print('很复杂')
13 r=f1()
14 print(r)
15 #输出:ccccc
16 #     很复杂
17 #    dddd
18 #    None

两个装饰器的作用

def outer_1(func):
    def inner(*args,**kwargs):
        print('aaaa')
        r=func(*args,**kwargs)
        print('bbbb')
        return r
    return inner

def outer(func):
    def inner(*args,**kwargs):
        print('ccccc')
        r=func(*args,**kwargs)
        print('dddd')
        return r
    return inner

@outer_1
@outer
def f1(a1,a2):
    print('很复杂')
    return a1+a2

r=f1(2,4)
print(r)
#输出:
aaaa
ccccc
很复杂
dddd
bbbb
6
原文地址:https://www.cnblogs.com/wangbinbin/p/7134435.html