首页 > 代码库 > python 装饰器的用法

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

 

python 装饰器的用法