day12装饰器

今日上课内容(2020-3-11):

1.装饰器的形成过程:最简单的装饰器,有返回值的,有一个参数,万能参数

2.装饰器的作用

3.原则:开放封闭原则

4.装饰器的固定模式

5.语法糖:@

import time
time.sleep(3)
def func():
    print('Good morning everybody! Welcome back to your class!')
func()
Good morning everybody! Welcome back to your class!
# 完成计算函数运行的时间
def func():
    start = time.time()
    print('Hello')
    time.sleep(6)
    end = time.time()
    print(end - start)
func()
Hello
6.001676321029663
def timmer(f):
    start = time.time()
    f()
    end = time.time()
    print(end - start)
def func():
    time.sleep(6)
    print('Hello')

timmer(func)

    
Hello
6.00213360786438
import time
def func():
    time.sleep(0.01)
    print('Hello')


    
def timmer(f):
    def inner():
        start = time.time()
        f()
        end = time.time()
        print(end - start)
    return inner

func = timmer(func)
func()
Hello
0.011965513229370117

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PI5a7axw-1584025718739)(attachment:image.png)]

上图以说明程序的运行过程

f()就是被装饰的函数 而inner是没有返回值的,而inner被传给了func

出现在装饰器函数里的并不是参数,而是被装饰的函数

#完整的装饰器
def wrapper(func):
    def inner():
        ret = func(*args,**kwargs)
        return ret
    return inner

@wrapper
def qqxing():
    print(5656)
    
#当我下一IC执行qqxing函数时候,实际上执行的就是inner,因为他返回的是inner函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值