python 学习之路(装饰器)

来源:互联网 发布:apache 目录别名 编辑:程序博客网 时间:2024/06/05 16:14

python 学习之路(装饰器)

装饰器其实也是函数,即装饰其他的函数
原则:
1. 不能修改被装饰的函数的源代码
2. 不能修改被装饰的函数的调用方式

先感受一下装饰器

import timedef b(func):    def c(*args , **kwargs):        start_time = time.time()        func(*args,**kwargs)        end_time = time.time()        print('this is time is %s' %(end_time-start_time))    return c@b # 装饰器想给哪个函数用,就在这个函数上直接写@+装饰器函数的名字def a ():    print('start')    time.sleep(2)    print('end.')a()# 打印:# start# end.# this is time is 2.001328468322754

可以看出上方的b函数里面嵌套一个c函数
扫盲:
1. 高阶函数:就是参数为函数;
2. 嵌套函数:就是函数里面在定义一个函数;
3. 装饰函数:就是 高阶函数+嵌套函数

看上去很简单,但是还是需要多加练习

import time# 装饰器def b(func):    def c(*args , **kwargs): # 传递参数,有则传,没有就不传        start_time = time.time()        func_1 = func(*args,**kwargs) # 有就接收,没有就不接收        end_time = time.time()        print('this is time is %s' %(end_time-start_time))        return func_1 # 将函数返回    return c@bdef a ():    print('start a')    time.sleep(2)    print('end a')    return '我就是我,不一样的烟火'@bdef a1(name):    print(name)    print('end a1')print(a())a1("dd")

打印:
start a
end a
this is time is 2.000760316848755
我就是我,不一样的烟火
dd
end a1
this is time is 0.0

原创粉丝点击